二叉查找树与红黑树概念性质及操作时间复杂度
2013-01-05 16:58
316 查看
操作名(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) |
红黑树满足的性质:
(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).
相关文章推荐
- 时间复杂度的概念
- 图解集合7:红黑树概念、红黑树的插入及旋转操作详细解读
- 实现一个栈,要求Push(入栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)
- Python内置方法操作的时间复杂度
- 各种数据结构insert和search操作的平均时间复杂度比较
- 算法的时间复杂度概念
- list的常见操作以及算法的时间复杂度
- 图解集合7:红黑树概念、红黑树的插入及旋转操作详细解读
- 排序二叉树,平衡二叉树和红黑树的概念以及相关的操作讲解
- linux内核时间管理(一) : 时间概念和延迟操作
- 二叉树的性质以及二叉查找树的基本操作
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 【面试题】实现一个栈,要求Push(入栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)
- 双栈实现队列、双队列实现栈、实现一个栈Push(出栈)Pop(入栈)Min(返回最小值的操作)的时间复杂度为O(1)
- 排序二叉树,平衡二叉树和红黑树的概念以及相关的操作讲解
- 实现一个出栈,入栈,返回最小值的操作的时间复杂度为O(1)的栈
- 实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push、Pop、Min(返回最小值的操作)的时间复杂度为O(1)
- 改良stack的push操作,使得从stack中获取最大元素的时间复杂度为O(1) [转]
- 设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)