首页 > 解决方案 > 如何从堆中删除根节点?

问题描述

我有一个堆:90 80 80 40 10 20 50。我必须删除根节点 3 次。它会取而代之的是什么叶子?

我尝试删除 90 个根节点并将其替换为 50 个,因为它位于堆的最后一个位置。但我也看到可以用 40 替换它,因为它是最后一个左孩子。什么解决方案是正确的?

标签: treebinaryheap

解决方案


将其替换为 50 是正确的,因为它保持了从上到下和从左到右完整的堆结构的属性。

完全二叉树是一棵二叉树,其中除了可能的最后一层外,每一层都被完全填满,并且所有节点都尽可能靠左。
因此,删除最右边的位会使树尽可能地靠左。


推荐阅读