堆中入队只能添加到最后一个?出队只能从根节点移除?

来源:4-4 Shift Down

释然小师弟

2019-02-22

如题,是这样吗?

写回答

1回答

liuyubobobo

2019-02-23

可能我没有太理解你的问题。


入堆过程是先把新元素放到堆的最后位置,之后再进行调整,把这个新元素调整到满足堆性质的正确位置;新元素最终的位置不一定在堆的最后。

出堆过程,是的,只能从根节点移除。这是因为出堆的一定是当前堆中的最大元素(以最大堆为例),只有一个。这个最大元素一定在根节点(根据堆的性质)。但是,移除这个元素之后,为了维护堆的性质,还需要对堆中其他元素进行调整:)


继续加油!:)

0
1
释然小师弟
非常感谢!
2019-02-23
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程