最大堆和最小堆原理

最大堆和最小堆原理

最大堆和最小堆是二叉堆的两种形式。二叉堆(binary heap)是一种特殊的堆,二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足堆特性:父节点总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆。

基本概念:

1、完全二叉树:若二叉树的深度为h,则除第h层外,其他层的结点全部达到最大值,且第h层的所有结点都集中在左子树。

2、满二叉树:满二叉树是一种特殊的的完全二叉树,所有层的结点都是最大值。

定义:

1、堆是一颗完全二叉树

2、堆中的某个结点的值总是大于等于(最大堆)或小于等于(最小堆)其孩子结点的值。

3、堆中每个结点的子树都是堆树。

一般我们把堆分为大根堆与小根堆,也称最大堆,最小堆。顾名思义,就是堆的每个节点都大于它的子孙节点称为大根堆,堆的每个节点小于他的左右子孙节点称为小根堆。