[数据结构]堆结构

  

  ,是一棵被完全填满的二叉树,唯一可能的例外是它的底层,底层的元素从左到右填入。这样的树被称为完全二叉树。下图就是一个例子:

图-完全二叉树/堆

  因为二叉堆非常具有规律,所以实际上我们可以直接用数组来表示,而不需要结构体和指针。

  比如上图中的堆,我们可以用下面这个数组来表示

图-堆的数组实现

  可以发现,处在 i 位置上的元素就是 2*i 和 2*i+1 位置上的元素的父节点。 

  对于一个堆,当父结点的键值总是大于或等于任何一个子节点的键值时,称为最大堆。当父结点的键值总是小于或等于  任何一个子节点的键值时,称为最小堆

  那么,二叉堆需要满足以下两个特性:

  1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。

  2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆,或都是最小堆)。

posted @ 2018-02-05 15:38  Oran  阅读(219)  评论(0编辑  收藏  举报