首页 > 其他 > 详细

红黑树学习笔记

时间:2019-12-29 00:45:26      阅读:128      评论:0      收藏:0      [点我收藏+]

常见算法与数据结构
暴力:
二分: 前提,有序 , 时间复杂度O(lgn) ----> 转换成数据结构: 二叉树(二叉查找树,二叉搜索, 二叉有序树)
哈希: 最高效 , O(1), hash冲突 , jdk1.8 hashmap中的数据结构: 链表+红黑树(处理hash冲突的)
插值
索引: 搜索引擎 ,Lucene
bfs&dfs : 图论里面的遍历
平衡树AVL
B+树
B-Tree
二叉搜索树: 树的深度就是时间复杂度
红黑树 : 高效的查找结构, 底层也是一颗特殊的二叉查找树
性质:
1. 每个节点不是红色就是黑色
2. 不可能有连在一起的红色
3. 根节点就黑色(入度为0的节点)
4. 每个红色节点的两个子节点都是黑色. 叶子节点都是黑色(出度为0)

规则: 所有插入的节点默认就是红色

变色: 当前节点(插入节点)的叔,父节点都是红色
  (1) 把叔父节点为黑色
  (2) 祖变红
  (3) 原当前节点的祖节点成为新的当前节点

左旋: 若当前节点父红叔黑,且当前节点是右子树时,左旋, 以父结节为支点左旋

右旋: 若当前节点父红叔黑,且当前节点是左子树时,右旋
  (1) 把父节点变为黑色
  (2) 把祖父节点变为红色
  (3) 以祖父节点旋转

 

请看示例

10    20   30   5  15   3   8  再插入6

技术分享图片

图2中, 0006与0008都是红色与性质2矛盾,所以必然会变色

 

技术分享图片

图3中0005与0010都是红色,与性质2矛盾,且0005节点父红叔黑,且处于0010的左子树上,所以右旋

  技术分享图片   

技术分享图片

 

 

技术分享图片

 

 

以上就是红黑树一个右旋示例

分析工具: https://www.cs.usfca.edu/~galles/visualization/RedBlack.html

红黑树学习笔记

原文:https://www.cnblogs.com/z-qinfeng/p/12113566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!