84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
我知道堆是一个特殊的二叉树,但是为什么每次向堆中插入元素时都需要重排序?用java代码如何实现?
走同样的路,发现不同的人生
堆不光有二叉堆, 还有三叉堆等等多叉堆, 之所以每次向堆中插入元素都要重新排序, 是因为堆本身的特性, 如果一个二叉堆是最小堆, 那么每个节点的两个子节点都应该比自己大, 当堆中所有结点都小于等于它的两个子节点时, 此时堆有序; 当你插入一个新节点,就会破坏这种堆有序的状态, 所以需要重新排序. 至于java的实现版本上网找吧, 很好找的, JDK的堆实现是java.util.PriorityQueue类, 题主可以去看看
堆不光有二叉堆, 还有三叉堆等等多叉堆, 之所以每次向堆中插入元素都要重新排序, 是因为堆本身的特性, 如果一个二叉堆是最小堆, 那么每个节点的两个子节点都应该比自己大, 当堆中所有结点都小于等于它的两个子节点时, 此时堆有序; 当你插入一个新节点,就会破坏这种堆有序的状态, 所以需要重新排序. 至于java的实现版本上网找吧, 很好找的, JDK的堆实现是java.util.PriorityQueue类, 题主可以去看看