红黑树

来源:互联网 发布:java输出杨辉三角 编辑:程序博客网 时间:2024/06/06 06:18

红黑树:

1.)带节点颜色属性的二叉搜索树
2.)确保树的高度为 h=O(logn)

红黑树属性:

  1. 每个节点要么是红色,要么是黑色
  2. 每个叶子节点(一定是NULL指针)一定是黑色
    • 这意味着每个“真正”的节点都有两个孩子
  3. 红色节点的两个孩子都是黑色
    • 这意味着树的任何路径上不可能存在两个连续的红色节点
  4. 从任意某个节点出发,到所有能到达的叶子节点的路径上的黑色节点数量相等
  5. 根节点是黑色

黑色节点的高度:

黑色节点的高度的定义为:黑色节点到叶子节点的路径长度
一个高度为h的节点,其黑色节点高度h/2
可证明:一个拥有n个节点的红黑树,起高度h2log(n+1)
证明:

红黑树最差情况下的耗时

红黑树示例:

红黑树示例

如何插入新的节点: 8
插入8

如何插入新的节点: 11
插入11
节点11 不能为红色,违反第三条属性,一个红色节点的两个孩子节点都必须是黑色
节点11 不能是黑色,违反第四条属性,从节点到所有叶子节点上的黑色节点的数量必须相等
所有,只能重新定义树的颜色了:
这里写图片描述

如何插入新的节点: 10

红黑树:旋转

旋转

这里写图片描述

旋转示例

这里写图片描述
相对于9这个节点左旋
这里写图片描述

红黑树:插入

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一岁宝宝螺旋腿怎么办 七个月宝宝晚上咳嗽厉害怎么办 孕7个月感冒咳嗽怎么办 4个月婴儿肺炎怎么办 宝宝吃胡萝卜泥拉肚子怎么办 宝宝吃土豆泥不消化怎么办 五个月宝宝奶睡怎么办 橘子和牛奶一起吃了怎么办 半岁宝宝不喝水怎么办 一岁宝宝总是便秘怎么办 1岁的宝宝不喝水怎么办 两月宝宝不喝水怎么办 破壁机打出的果汁很浓稠怎么办 榨的果汁不甜怎么办 11个月宝宝吃盐怎么办 1岁半宝宝长牙慢怎么办 小孩里面的牙黑怎么办 7个半月宝宝便秘怎么办 2个月婴幼儿便秘怎么办 3个月宝宝不消化怎么办 一天大便二三次不消化怎么办 不消化没胃口几天不大便怎么办? 两个月的宝宝拉绿屎怎么办 肠胃不好消化功能差怎么办 2岁宝宝消化不好怎么办 5天新生儿不拉大便怎么办 七个月宝宝一周不拉屎怎么办 七个月的宝宝消化不良怎么办 七个月宝宝消化不良拉肚子怎么办 宝宝六个月了便秘怎么办 宝宝拉水酸臭味怎么办 50天婴儿不拉屎怎么办 六个月宝宝吃米粉便秘怎么办 纯母乳喂养的宝宝便秘了怎么办 换奶粉拉绿色是怎么办 2个月宝宝发烧怎么办 小宝绿色稀大便怎么办 新生儿吃奶粉大便干燥怎么办 婴儿拉绿色奶瓣怎么办 宝宝吃奶粉大便干燥怎么办 婴儿吃奶粉不大便怎么办