关于学习红黑树的一些小收获与总结
来源:互联网 发布:linux root 查看密码 编辑:程序博客网 时间:2024/05/17 06:05
先上代码:https://github.com/yefengdanqing/Datastruct
本人通过算法导论对红黑树进行认识并根据书中的伪代码实现一个红黑树类。
首先红黑树是一个相对平衡的二叉树;比到正真的平衡二叉树,他节省了用来维护平衡的开销;在二叉搜索树的基础上通过5条性质来约束,通过这样约束的树就是二叉搜索树。
第一:根节点是黑色;第二所有的叶子结点(其实只有一个节点,该节点理解为哨兵)是黑色;第三,如果一个节点是红色,那么他的孩子节点(们)必为黑色;第四,一个节点只有一种颜色,要么黑丝,要么红色;第五,从一个节点出发的路径到叶子节点(哨兵)的黑节点的数目相同,即黑高相同;对于红黑树的插入与删除也是违背了这几条性质,并围绕这些性质进行修复。
插入:
首先:对于插入红色节点比插入黑色节点违背的性质要少,因此,插入黑色节点;其次插入操作是处理红红节点问题;为了能满足整个树是红黑树,大体思路是将该节点进行上移,直到根节点,最后将跟节点涂黑也不影响整个树;但是在上移的过程中我们能通过旋转与改变颜色尽快的调整为合法的红黑树;这样更高效。
删除:
首先:删除操作再删除红节点的时候,对整个树没有影响,不予考虑整个结果;其次,对删除操作我们是将删除点转移到(或者本身就是)其直接后继节点进行处理,这样更试用所有的情况;第三,删除操作是处理黑黑问题,即删除点是黑色,删除后必然会违反红黑树的性质。(先写到这儿,待补充)
阅读全文
0 0
- 关于学习红黑树的一些小收获与总结
- 暑期小白关于编程的一些收获
- 关于swing的一些收获
- (小收获二)关于select标签与js的问题
- 做一个商务网站的一些总结与收获
- 关于storyBoard的一些小问题与总结
- ruby学习的一些收获
- Java小白的一些收获
- nice validator的一些小收获
- 一些小收获
- (小收获)关于form的提交
- 关于Applet的一个小收获
- 关于Date的一些小总结
- 关于“手机”一些术语的小总结
- 关于Set的一些小总结
- 关于使用bootstrap的一些小总结
- 关于@property的一些小总结
- Android 关于ListView的一些小总结
- c++ primer 笔记,第八(IO库)、九章(顺序容器)
- 用户流失分析中的关键技术
- CardView的属性详解
- 图的基本操作(基于邻接表):图的构造,深搜(DFS),广搜(BFS)
- C语言 2
- 关于学习红黑树的一些小收获与总结
- Python 练习实例5
- php抓取https网址出现错误的解决方法
- Toolbar状态栏的配置
- 老板的两分钱
- VTK学习(十二)图像切面提取
- MAGIX Movie Edit Pro Premium 2018官方版下载地址附安装教程
- JAVA 对象引用,以及对象赋值
- 继续写写博客吧