作业帮 > 数学 > 作业

改变堆Heap中元素的值:数据结构问题

来源:学生作业帮 编辑:神马作文网作业帮 分类:数学作业 时间:2024/09/21 02:49:08
改变堆Heap中元素的值:数据结构问题
增加或减少堆Heap中某个元素的值之后
是不是必须要用Heapify重新建立堆?
能否只是用SiftUp或SiftDown操作进行更新?
Heapify重新建立堆的速度太慢了!
改变堆Heap中元素的值:数据结构问题
可以只用SiftUp和SiftDown,因为只要保证满足堆的性质(即每一个节点的值比父节点小/大,比两个子节点大/小)就可以了.当你改变某个元素的值之后,仅在这一局部违反了这个性质,而在SiftUp或者SiftDown调整的过程中,注意“始终只有一个局部违反这个性质”,直至SiftUp or SiftDown无法进行.
细节方面,注意先SiftUp再SiftDown
再问: 先SiftUp再SiftDown是什么意思??
再答: 抱歉,之前想错了。不需要先SiftUp再SiftDown。这两个只有一个会被执行。