数据结构和算法-堆

二叉堆是一个数组,逻辑结构可以看成近似的完全二叉树。树上的节点对应数组中的一个元素,树除了最底层外,该树是完全二叉树,而是从左向右填充。结构如下:

数据结构和算法-堆

 

 表示堆的数组A [1,...,length]有如下俩个属性:

length : 数组长度;

heap-size :堆元素的个数;

关系 :0 <= A.heap-size <= A.length 

树的根节点为 A[1];

节点高度:该节点到根节点最长简单路径上的边的数目,即↓lgi(以2为底的对数,再向下取整)

某个节点为A[i] ,若该节点存在父节点、左右孩子节点 : 

父节点(PARENT(i)):m = ↓(i/2) 向下取整, A[m]

左孩子节点(LEFT(i)):A[2i]

右孩子节点(RIGHT(i)) : A[2i+1]

最大堆 : A[PARENT(i)] >= A[i]

最小堆 :  A[PARENT(i)] <= A[i]

 

 

上一篇:#4699. 序列


下一篇:东北大学842——排序的编程题