扫码关注官方订阅号
84669人学习
65727人学习
82984人学习
467778人学习
498837人学习
471966人学习
256484人学习
152542人学习
224170人学习
139536人学习
81804人学习
85022人学习
11944人学习
20001人学习
60816人学习
5487人学习
15007人学习
2150人学习
6980人学习
194925人学习
359900人学习
1142人学习
19058人学习
3206人学习
180550人学习
48569人学习
17603人学习
40936人学习
1049人学习
750人学习
32909人学习
我知道堆是一个特殊的二叉树,但是为什么每次向堆中插入元素时都需要重排序?用java代码如何实现?
走同样的路,发现不同的人生
堆不光有二叉堆, 还有三叉堆等等多叉堆, 之所以每次向堆中插入元素都要重新排序, 是因为堆本身的特性, 如果一个二叉堆是最小堆, 那么每个节点的两个子节点都应该比自己大, 当堆中所有结点都小于等于它的两个子节点时, 此时堆有序; 当你插入一个新节点,就会破坏这种堆有序的状态, 所以需要重新排序. 至于java的实现版本上网找吧, 很好找的, JDK的堆实现是java.util.PriorityQueue类, 题主可以去看看
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
精品班
技术支持
技术咨询
学习群
会员优惠
返回顶部
堆不光有二叉堆, 还有三叉堆等等多叉堆, 之所以每次向堆中插入元素都要重新排序, 是因为堆本身的特性, 如果一个二叉堆是最小堆, 那么每个节点的两个子节点都应该比自己大, 当堆中所有结点都小于等于它的两个子节点时, 此时堆有序; 当你插入一个新节点,就会破坏这种堆有序的状态, 所以需要重新排序. 至于java的实现版本上网找吧, 很好找的, JDK的堆实现是java.util.PriorityQueue类, 题主可以去看看