基本术语
- 节点:包含一个数据元素以及若干个指向其子树的分支。
- 节点的度:该节点拥有子树的数量。
- 叶子节点:度为0的节点。
- 树的度:是树内各个节点的最大值。
- 节点的层次:从根开始定义,根节点为第一层,根的孩子为第二层。
- 孩子、双亲:节点的子树称为孩子;该节点称为孩子的双亲。
- 深度:树中节点的最大层次。
- 森林:多棵互不相交的树的集合。
- 有序树:树中的节点从左至右是有次序(不可交换)的。
二叉树
- 特点:每个节点最多有两棵子树,并且其次序不可颠倒。
- 5种基本形态:空二叉树、只有根节点、根节点与左子树、根节点与右子树、根节点和左右两个子树。
- 满二叉树:一棵深度为k且有2^k -1 个节点的二叉树。
- 完全二叉树:从根节点开始编号,从上至下、从左至右编号,与满二叉树的编号一一对应。
- 二叉排序树:若左右子树均不为空,则左子树上的所有关键字均小于根关键字的值;右子树上的所有关键字均大于根关键字的值;左右子树均是一棵二叉排序树。
- 性质:
1. 二叉树的第i层至多有2^(i-1)个节点。
2. 深度为k的二叉树最多有2^k -1 个节点。
3. 任何一棵二叉树,其叶子节点数为O,度为2的节点为m,则O = m + 1。
平衡二叉树(AVL树):
其是一种特殊的二叉排序树,其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。
平衡方式:
平衡调整方式有:LL、RR、LR、RL四种方式。
在每次插入或者删除结点时,找到最小不平衡二叉树,然后通过平衡调整方式进行旋转调整平衡。
B-树(B树)
B-树中所有结点孩子的结点个数的最大值称为B-树的阶,称作(m)。
例如:
建立一个5阶的B-树,树的关键字个数为2~4个。(【5/2 -1】(向上取整)、n-1)
除根结点外,关键字个数取值范围:(m/2) - 1 < n < m-1
添加关键字时,如果出现超出关键字范围,则需要取出第 【5/2】个数座位根节点,并将其左右的关键字放到该结点的左右两个分支上。
B+树
除根结点外,关键字个数取值范围:(m/2) <= n <= m
红黑树
红黑树就是一种平衡二叉树,除了符合二叉查找树的特性之外,还具有下列的特性:
-
节点是红色或者黑色
-
根节点是黑色
-
每个叶子的节点都是黑色的空节点(NULL)
-
每个红色节点的两个子节点都是黑色的。
-
从任意节点到其每个叶子的所有路径都包含相同的黑色节点。