0
我有一个这样的名单:插入一个列表,二叉树
a=[(("x",0.312),("e",0.0232),("f",0.245),("a",0.1322))]
,现在我想将它插入到最大堆树和每个节点必须有两个值,例如,:(“X” ,0.312),我可以分别得到两个值。我知道如何实现Max Heap。我需要如何处理插入功能的帮助。 如果它更容易,它可以是二叉树。由于
class Heap:
def __init__(self):
self.heap = list()
#return the size of the tree
def size(self):
return len(self.heap)
def isLeaf(self, index):
#returns true if the index refers to a leaf, false otherwise
return self.size() < 2 * index + 2
def parent(self, index):
#returns the parent of the node at index
return(index - 1) // 2
def leftChild(self, index):
#returns the index of the left child of a node
return 2 * index + 1
def rightChild(self, index):
#returns the index of the right child of a node
return 2 * index + 2
def add(self, value):
#add a given value to the heap
#append the value to the list
#shift the element into the correct position
self.heap.append(value)
index= self.size()-1
while self.parent(index) >=0 and self.heap[index] < self.heap[self.parent(index)]:
swap= self.heap[index]
self.heap[index]=self.heap[self.parent(index)]
self.heap[self.parent(index)]=swap
index = self.parent(index)
你看过[heapq](http://docs.python.org/2/library/heapq.html)模块吗? – 2013-04-25 06:50:32
@TommyNgo这是一个练习,还是您会接受建议为此创建的模块的答案? – jamylak 2013-04-25 07:00:33