数据结构-堆的定义描述

堆是什么?

它是一种树形组织,使我们能迅速确定包含最大值(或最小值)的结点。

具体来说,堆是一颗左平衡的二叉树。随着结点的增加,树会逐级从左到右增长。

(左平衡是指,如果一棵平衡树的最后一层的所有叶子结点都在最靠左边的位置上,则称这棵树是左平衡的。)

顺序特点

堆状态的二叉树是“局部有序”的,任何一个结点与其兄弟结点之间都没有必然的顺序关系,但它与其父子结点有大小顺序关系。

堆的分类

最大值堆:子结点比父结点小,根结点是树中最大的结点。

最小值堆:子结点比父结点大,根结点是树中最小的结点。

表示方式

对于堆来讲,比较好的表示左平衡二叉树的方式是,将结点通过“层级(水平)遍历”的方式连续存储到一个数组中。

假设i是树中的某一结点,

    其父结点位于(i-1)/2处(忽略小树部分);

    左子结点位于2i+1处;

    右子结点位于2i+2处;

这样的组织结构或方式对于堆来说非常重要,通过它我们能迅速定义堆的最后一个结点,最后一个结点指处于树中最深层最右端的结点。

 

posted @ 2018-03-13 06:19  DreamGo  阅读(2209)  评论(0编辑  收藏  举报