红黑树(插入)
来源:互联网 发布:vm12虚拟机安装mac os 编辑:程序博客网 时间:2024/06/15 13:13
一颗高度为h的二叉查找树的操作时间复杂度都为O(h),如果二叉树高度较高时(不平衡)时间复杂度就不是很好。红黑树是许多平衡查找树中一种,它能保证最坏情况下,基本的动态集合操作为O(logn)
1. 红黑树的性质
1)、每个节点不是红就是黑
2)、根节点是黑
3)、每个叶节点是黑
4)、如果一个节点是红,则它的2个儿子是黑
5)、对于每个节点,该节点到其子孙叶子节点的所有路径包含相同数目的黑节点。
2、红黑树的插入(较为简单)
首先默认:先插入到合适位置,赋上红色,然后进行调整!!!!!!!
第一步:插入合适位置,赋上红色。
《》第一步结束时那些性质会破坏呢? 性质1)和性质3)显然永远不会被破坏!!,因为新插入节点的子女都是哨兵。性质5)也不会被破坏,因为插入的是红节点,它的2个子女哨兵还是黑色,并不会影响黑高。唯一破坏的就是(性质2:根节点必须是黑色)和(性质4:如果一个节点是红,它的两个子女必须是黑)当破坏性质2时,把节点变为黑色。
第二步:调整
当性质4)破坏时,需要调整。性质4)破坏即插入节点的父节点也为红色,那么需要调整。
调整一共6种情况,但是其中三种和另外三种对称。下面讲述的是z的父节点是z的祖父节点的左节点(同理右节点)
三种情况的区别在于插入节点Z的父亲的兄弟(叔叔)的颜色不同。
即
1、叔叔颜色为红
2、叔叔颜色是黑,且Z是右孩子
3、叔叔是黑,且Z是左孩子。
1、叔叔是红。
z无论是左孩子还是右孩子,方法都一样。。Z变成newZ后按同样方法向上迭代。因为newZ的父亲可能是红。
2、叔叔是黑,且Z是左孩子
3、叔叔是黑,且Z是右孩子
- 红黑树插入
- 红黑树插入
- 红黑树插入
- 红黑树--插入
- 红黑树--插入
- 红黑树 插入
- 红黑树插入
- 红黑树(插入)
- 红黑树插入
- 红黑树插入
- 红黑树插入算法
- 红黑树的插入
- 红黑树(一) 插入
- 红黑树的插入实现
- 红黑树插入删除归类
- 红黑树插入实验
- 红黑树以及插入
- 红黑树-插入删除
- SGU326 perspective 最大流 竞赛排名问题
- python3 比较两个list的结构
- poj 1860 Currency Exchange
- Android应用优化过程分析
- Codeforces Round #271 (Div. 2) F 线段树+pair
- 红黑树(插入)
- [2016ACM多校] HDU5768 容斥原理 中国剩余定理
- 完全卸载oracle11g教程、Oracle11g的卸载方法和步骤
- 风靡的七个人生工具(SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则)
- PAT 1051. Pop Sequence
- hdu 1080 Human Gene Functions( 类似最长公共子序列)
- 【POJ2155】Matrix-二维树状数组+前缀和
- 20160729 其他小代码
- python3.3网页图片爬虫