我正在尝试从头开始实现堆数据结构。有人可以给我一个伪代码吗?
我正在尝试使每个节点具有4个变量。第一个变量用于数据,第二个变量用于父节点,最后两个变量用于子节点。我知道理论上节点是从左到右添加的,但是一个节点是如何实现相同的。截至目前,我还停留在添加功能上。
class Node:
def __init__(self,data,parent=None,child1=None,child2=None):
self.data=data
self.parent=parent
self.child1=child1
self.child2=child2
class Heap:
def __init__(self,parent=None):
self.parent=parent
def add(self,data):
new_node= Node(self,data,parent=None,child1=None,child2=None)
new_node.parent=self.parent
if self.parent is not none:
if self.parent.child1 is None:
self.parent.child1=new_node
if self.parent.child2 is None:
self.parent.child2=new_node
#update self.parent=new_node??
答案 0 :(得分:0)
插入最小堆的规则:
add new item to the end of the array
while the new item is larger than its parent
swap the new item with its parent
删除堆中顶部项(即最小项)的规则
save the top item
move the last item in the array to the first position
while the item is larger than either of its children
swap the item with its smallest child