什么是红黑树
什么是二叉树
二叉树简单来说就是 每一个节上可以关联两个子节点
a / \ b c / \ / \ d e f g / \ / \ / \ / \ h i j k l m n o
红黑树定义和性质
红黑树是一种含有红黑结点并能自平衡的二叉查找树。它必须满足下面性质:
- 性质1:每个节点要么是黑色,要么是红色。
- 性质2:根节点是黑色。
- 性质3:每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
- 性质4:每个红结点的两个子结点一定都是黑色。
- 性质5:任意一结点到每个叶子结点的路径都包含相同数量的黑结点。
从性质5又可以推出:
- 性质5.1:如果一个结点存在黑子结点,那么该结点肯定有两个子结点
红黑树能自平衡,它靠的是什么?三种操作:左旋、右旋和变色。简单点说,旋转和变色的目的是让树保持红黑树的特性。
- 左旋:以某个结点作为支点(旋转结点),其右子结点变为旋转结点的父结点,右子结点的左子结点变为旋转结点的右子结点,左子结点保持不变。
- 右旋:以某个结点作为支点(旋转结点),其左子结点变为旋转结点的父结点,左子结点的右子结点变为旋转结点的左子结点,右子结点保持不变。
- 变色:结点的颜色由红变黑或由黑变红。
左旋
右旋