【算法导论】第13章,红黑树
红黑树是一种“平衡的”查找树,能确定动态集合操作时间为O(logn)
13.1 红黑树的性质
红黑树的每个节点除了 key, value, p, left, right之外,还有color,
有value的都视为内节点,如果没有儿子,认为儿子都是NIL,
红黑性质:
1、每个节点要么红要么黑
2、根节点黑
3、叶子节点(NIL)黑
4、如果节点为红,那么儿子为黑
5、从任意节点出发,下面任意一条路径,黑节点个数都相同。
机智处理
NIL节点指向同一个位置,其value为NIL,p, left, right的定义并不重要。
整个树任意一条路径黑色节点的个数叫做黑高度。
定理:n个节点的红黑树高度至多为2log(n+1)
13.2 旋转
插入和删除元素,可能会导致红黑性质改变,为了维持红黑性质,可以旋转。
左旋和右旋:
左旋:左父右子 到 右父左子:
右旋:右父左子 到 左父右子:
13.3 插入
13.4 删除