删除最小元素后重新调整二进制堆
问题描述:
删除二进制堆中的最小元素后,即删除根后,我知道必须调整堆以维持堆属性。 但是,执行此操作的首选方法似乎是将最后一页分配给根并筛选它。删除最小元素后重新调整二进制堆
我想知道为什么我们不采取过去是根的小孩,只是不断筛选所有的孩子?这不是相同数量的操作,那么为什么“分配最后一片叶子到根部和筛下”方法更受欢迎?
答
因为你必须保留最后一行从左边填满树。从上往下筛选,你不能保证你筛选的最后一个元素将是最右边的元素。
试试看看这样一个简单的例子:'[1,3,5,4,6,7]'。如果你将小孩向上移动,你最终会得到一堆:'[3,4,5,X,6,7]'(X是一个洞)。以最后一个元素结束堆看起来像:'[3,4,5,7,6]'。 – Dolphin 2010-05-24 15:23:04