树的基础概念(二)

堆:经过排序的完全二叉树,其中任一非叶子节点的值均不大于(或不小于)其左孩子和右孩子结点的值。

最大堆和最小堆是二叉堆的两种形式。

最大堆:根节点的键值是所有堆结点键值中最大者。

最小堆:根节点的键值是所有堆结点键值中最小者。

最大-最小堆:集结了他俩的优点。是最大层和最小层交替出现的二叉树,即最大层节点的儿子属于最小层,最小层节点的儿子属于最大层。以最大(小)层节点为根节点的子树保有最大(小)堆性质:根节点的键值为该子树结点键值中最大(小)项。

=======================================================

二叉排序树

(1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值;

(2)若右子树不空,则右子树上所有节点的值均大于它的根节点的值;

(3)左、右子树也分别为二叉排序树;

=======================================================

平衡二叉树(AVL树)

它是一颗空树 或

它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一颗平衡二叉树

常用算法:红黑树,AVL,Treap。

最小二叉平衡树的节点公式:F(n) = F(n-1)+F(n-2)+1

1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量

=======================================================

哈夫曼树

它是带权路径长度最小的二叉树。

哈夫曼树的构造:

有n个权值,则构造出哈夫曼树有n个叶子节点。

(1)将1……n看成是n棵树的集合;

(2)集合中选出两个根节点的权值最小的树合并,作为一颗新树的左右子树,且新树的根节点权值为其左右子树节点权值之和;

(3)从集合中删除选取的两棵树,并将新树加入集合

(4)重复2,3步骤,直到集合中只剩一颗树为止

原文地址:https://www.cnblogs.com/niceforbear/p/4529450.html