1.完全二叉树的性质
从顶至下将完全二叉树从0按层开始标号
标号为i的父节点标号为(i-1)/2,左子节点标号 2 * i + 1, 右子节点 标号2 * i + 2
2. 堆的建立
堆的本质就是一棵完全二叉树,可以利用完全二叉树的性质建立堆。堆数据结构上是一棵树,实际上是以数组的形式存储的。
可以自底向上和自顶向上的两种方式进行建堆。自顶向下是节点从上至下下沉,自底向上是节点从下至上上浮。
3.优先级队列
优先级队列本质上就是一个堆,Java里的PriorityQueue就是堆的实现。
1.完全二叉树的性质
从顶至下将完全二叉树从0按层开始标号
标号为i的父节点标号为(i-1)/2,左子节点标号 2 * i + 1, 右子节点 标号2 * i + 2
2. 堆的建立
堆的本质就是一棵完全二叉树,可以利用完全二叉树的性质建立堆。堆数据结构上是一棵树,实际上是以数组的形式存储的。
可以自底向上和自顶向上的两种方式进行建堆。自顶向下是节点从上至下下沉,自底向上是节点从下至上上浮。
3.优先级队列
优先级队列本质上就是一个堆,Java里的PriorityQueue就是堆的实现。