二叉堆
二叉堆
二叉堆
二叉堆的逻辑结构是完全二叉树,实际上是由1为起点的一维数组表示。
给定一个节点的下标i
,其父节点parent(i)=1/2
、左子节点left(i)=2*i
、右子节点right(i)=2*i+1
。
最大堆性质:节点的键值小于等于其父节点的键值。最大堆堆根中存储着最大的值。
最小堆性质:节点的键值大于等于其父节点的键值。最小堆的根中存储着最小的值。
1.Complete Binary Tree
读取以完全二叉树形式表示的二叉堆,并按照下面的格式输出二叉堆各节点信息
node id: key = k, parent key = pk, left key = lk, right key = rk
输入:第一行堆的大小H。接下来一行,按节点编号顺序输入代表二叉堆节点值的H个整数
输出:按节点编号顺序(1~H)输出代表二叉堆各节点的信息
(挑战程序设计竞赛2算法与数据结构191页例题)
1 |
|
2.Maximum Heap
使用给定数组生成最大堆。复杂度O(H)
输入:第一行堆的大小H。接下来一行,按节点编号顺序输入代表二叉堆节点值的H个整数
输出:按节点编号顺序(1~H)输出代表二叉堆各节点的值
(挑战程序设计竞赛2算法与数据结构193页例题)
1 |
|
二叉堆
http://jiqingjiang.github.io/p/69c852d4/