操作名(h树高) | 二叉查找数 | 红黑树 |
查找 | O(h) | O(lgn) |
查最大/小元素 | O(h) | O(lgn) |
前驱/后继 | O(h) | O(lgn) |
插入 | O(h) | O(lgn) |
删除 | O(h) | O(lgn) |
旋转 | 无 | O(1) |
高度 | 下取整(lgn)+1<=h<=n | <=2lg(n+1) |
PS:黑高度定义:从某个结点x出发(不包括该节点)到达一个叶子结点的任意一条路径上,黑结点的个数成为该节点x的黑高度.用bh(x)表示.
红黑树满足的性质:
(1) 每个结点是红的或黑的
(2) 根结点是黑的
(3) 每个叶结点是(NIL)黑的
(4) 如果一个结点是红的,则它的两个孩子结点都是黑的
(5) 对于每个结点,从该节点到其子孙结点的所有路径上包含相同数目的黑结点.
结论:
(1).红黑树根的黑高度至少为h/2
(2).一棵n个内结点的红黑树的高度至多为2lg(n+1)
数据结构的扩张:
记住一个数lgn,几乎所有的操作都是O(lgn).
OS_SELECT, OS_RANK, INTERVAL_SEARCH, INTERVAL_INSERT, INTERVAL_DELETE都是O(lgn).