红黑树
2016-02-02 00:15
183 查看
红黑树(没有一条路径会比其他路径长2倍)是一种平衡二叉树,它在计算机中被广泛的应用!
结点采用的结构:
1、每个结点的颜色是红色或者黑色。
2、根结点是黑色。
3、每个叶结点都是黑色
4、红色结点的子结点都是黑色。
5、对每一个结点,从该结点到其后代所有的叶子结点的简单路径上,都包含相同数目的黑色结点。
说明:根结点的父结点和所有叶子结点的子结点都指向同一个哨兵结点T.nil,当然这个哨兵结点的颜色为黑色。
旋转分为左旋和右旋
左旋的伪代码如下:
未完待续......
结点采用的结构:
struct red-black{ int key; int color; struct red-black *p,*left,*right;//父,左,右 }
一、牢记红黑树的五大性质。
红黑树的五大性质是学习红黑树最重要最基础的,一定要背下来,方便在插入删除的时候保持这五大性质。1、每个结点的颜色是红色或者黑色。
2、根结点是黑色。
3、每个叶结点都是黑色
4、红色结点的子结点都是黑色。
5、对每一个结点,从该结点到其后代所有的叶子结点的简单路径上,都包含相同数目的黑色结点。
说明:根结点的父结点和所有叶子结点的子结点都指向同一个哨兵结点T.nil,当然这个哨兵结点的颜色为黑色。
二、旋转操作
旋转是一种能保持二叉搜索树性质的搜索树局部操作。旋转分为左旋和右旋
左旋的伪代码如下:
left-rotate(T,x) { y=x.right; x.right=y.left y.p=x.p //孩子找父亲是唯一的 if(x.p==T.nil) //父亲找孩子就会有多种情况 T.root=y else if(x==x.p.left) x.p.left=y else x.p.right=y y.left=x x.p=y }
未完待续......
相关文章推荐
- JavaScript 资源大全
- Python 10.5 hashlib
- hdu 5616 Jam's balance(dp 正反01背包)
- ecneuqeSnoitatumreP.60
- DOS中的乱码以及编码的问题
- static应用
- SolrCloud中的文件与Collection管理
- cocos2d-x CheckBox的使用
- 使用 JavaScript 控制 HTML5 视频播放器
- 素数筛选
- 算法时间复杂度的计算 [整理]
- Android断点下载实现
- 继承、组合和接口用法——策略模式复习总结
- HDU 1319 Prime Cuts(打表)
- Codeforces Round #341 (Div. 2) B
- Android学习笔记—Service(1、start启动)
- leetcode之Serialize and Deserialize Binary Tree
- HelloWorld二三事:创建项目、目录结构、DDMS/ADB/Logcat工具、app怎么运行的
- 编程题
- 多线程总结下