链表->二叉树->二叉搜索树->平衡二叉树->红黑树
二叉搜索树
(1)每个节点有一个唯一的key值,且所有结点互不相同;
(2)左子树所有key值小于根的key值;
(3)右子树所有key值大于根的key值;
(4)左右子树都是二叉搜索树。
平衡二叉树(AVL树)
平衡二叉树也叫自平衡二叉搜索树(Self-Balancing Binary Search Tree),所以其本质也是一颗二叉搜索树,不过为了限制左右子树的高度差,避免出现倾斜树等偏向于线性结构演化的情况,所以对二叉搜索树中每个节点的左右子树作了限制,左右子树的高度差称之为平衡因子,树中每个节点的平衡因子绝对值不大于1 ,此时二叉搜索树称之为平衡二叉树。
自平衡是指,在对平衡二叉树执行插入或删除节点操作后,可能会导致树中某个节点的平衡因子绝对值超过1,即平衡二叉树变得“不平衡”,为了恢复该节点左右子树的平衡,此时需要对节点执行旋转操作。
红黑树
红黑树是一种含有红黑结点并能自平衡的二叉查找树。它必须满足下面性质:
- 性质1:每个节点要么是黑色,要么是红色。
- 性质2:根节点是黑色。
- 性质3:每个叶子节点(NIL)是黑色。
- 性质4:不可能连在一起的红色节点
- 性质5:每个红色结点的两个子结点一定都是黑色。
- 性质6:任意一结点到每个叶子结点的路径都包含数量相同的黑结点。