红黑树(第一篇)
介绍 R-B Tree全称Red-Black Tree,又名红黑树 1972年由鲁道夫.贝尔发明 一种自平衡二叉查找树 二叉查找树每个节点增加一个存储位表示节点的颜色,非黑即红 时间复杂度O(log n) 二叉查找树? 平衡二叉查找树? 二叉查找树 Binary Search Tree 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值 任意节点的左、右子树也分别为二叉查找树 没有键值相等的节点 时间复杂度O(log n)(最好的情况下) 例子 二叉查找树 退化成线性的二叉查找树,时间复杂度O(n) 平衡二叉查找树 AVL 任何一个节点的左子树与右子树都是平衡二叉查找树,且高度之差的绝对值不超过1(即平衡因子:左子树高度-右子树高度,1 or 0 or -1) 严格的平衡二叉查找树 对于查找友好,对于插入、删除不够友好,频繁破坏规则,频繁旋转以适应规则 例子 RB特性 每个节点或者黑色,或者红色 根节点是黑色 每个叶子节点(NIL)是黑色(注:此处叶子节点,指为空(NIL或NULL)的叶子节点) 如果一个节点是红色的,则它的子节点必需是黑色的 对任意节点,其到叶子节点(NIL)的每条路径都包含相同数目的黑色节点 例子 时间复杂度 定理:一棵含有n个节点的红黑树的高度至多为2log(n+1) 逆否命题