从零开始实施堆

时间:2019-07-05 19:26:44

标签: python-3.x heap

我正在尝试从头开始实现堆数据结构。有人可以给我一个伪代码吗?

我正在尝试使每个节点具有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??

1 个答案:

答案 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