上次介绍了二叉树、满二叉树、完全二叉树
今天接着介绍4个成员,它们分别是:
- 二叉查找树:
- 平衡二叉树:
- humffman哈夫曼树
- 红黑树
二叉查找树
二叉查找树也称二叉排序树(BST):
它是一棵空树,或者是满足下面特性的非空二叉树:
- 若左子树非空,则左子树上所有结点关键字值均小于根节点的关键字值
- 若右子树非空,则右则左子树上所有结点关键字值均大于根节点的关键字值
- 左、右子树本身也分别是一棵二叉排序树
注意:
- 二叉排序树是一个递归的数据结构,对二叉树进行中序遍历,可以得到一个递增的有序序列。
- 二叉排序树是一种动态集合,其特点是树的结构通常不是一次生成的,而是在查找过程中,当树中不存在关键字等于给定值的结点时再进行插入。
- 二叉排序树的删除:若为叶子结点,则直接删去,否则,右子树空用左子女填补;左子树空用右子女填补;左右子树均不空,在右子树上找中序第一个子女填补。
- 查找效率:与高度H有关。
平衡二叉树
为了避免树的高度增长过快,我们对二叉树左右子树的高度差进行限定,从而有了平衡二叉树(AVL树),定义节点左子树与右子树的高度差为该结点的平衡因子。
平衡二叉树是一棵空树,或具有下列性质:
- 左右子树均为平衡二叉树
- 左右子树的高度差的绝对值不超过1
- 平衡二叉树的插入:
LL:右旋
RR: 左旋
LR: 先左后右双旋转
RL: 先右后左双旋转 - 平衡二叉树的查找:
深度为h的平衡树中含有的最少结点数=上两层结点数之和+1,其中,第一层结点数为1,第二层结点数为2。含n个结点的平衡二叉树的最大深度为以2为底n的对数,因此,平衡二叉树的平均查找长度为O(以2为底n的对数)。
哈夫曼树
在含有N个带权叶子结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树。
- 如果没有一个编码是另一个编码的前缀,则称这样的编码为前缀编码。
- 在度为m的哈夫曼树中,叶子结点数为n,则非叶子结点数的个数为((n-1)/(m-1))上取整。
红黑树
为了解决二叉查找树多次插入新结点导致的不平衡问题,引入红黑树。
红黑树是一种自平衡的二叉查找树,它满足:
- 结点是红色或黑色
- 根节点是黑色
- 每个叶子结点都是黑色的空结点
- 每个红色结点的两个子结点都是黑色结点(从每个叶子到根的所有路径上不能有两个连续的红结点)
- 从任一结点到其每个叶子结点的所有路径都包含相同数目的黑色结点
推荐地址