zoukankan      html  css  js  c++  java
  • 红黑树学习笔记(1)

    博客图片来源

    1 红黑树是一种二叉查找树。

    2 红黑树的性质。

    (1)每个节点是红色或者黑色

    (2)根节点是黑色

    (3)叶节点是黑色(叶节点就是空节点,实际不存储东西)

    (4)每一个红色节点的两个孩子都是黑色节点

    (5)对于每个节点,从该节点到任意后代叶子节点经过的黑色节点数相同。

    (6)满足二叉查找树的性质,即左子树所有键值小于当前节点键值,右子树所有键值大于当前节点键值。

    (7)在满足上面这些条件时,对于有n个内节点(内节点就是不包含叶节点)的红黑树,高度至多为$2log(n+1)$.首先定义一个节点x的黑高为$bh(x)$,表示从x到任意一个叶子节点路径上黑色节点的个数(不包括x)。先证明以某一节点x为根的子树中至少包含$2^{bh(x)}-1$个内节点(不是叶子的都是内节点)。用数学归纳法证明。如果x的高度为0,那么x是叶节点,包含0个内节点,满足该式子。对于高度为正值的x,其两个孩子至少包含$2^{bh(x)-1}-1$个内节点,所以以x为根的子树至少包含$(2^{bh(x)-1}-1)+(2^{bh(x)-1}-1)+1=2^{bh(x)}-1$个内节点。第二步,对于一棵高度为h的树,任意一条从根到叶节点(不包括根)的路径上至少有一半黑色节点,从而$bh(x)geq frac{h}{2}$,所以$ngeq 2^{bh(x)}-1geq 2^{frac{h}{2}}-1$,即$hleq 2log(n+1)$

    下面是一个红黑树的例子。

     

    3 左旋和右旋操作。对x进行左旋之后将变成右边,对y进行右旋之后会变成左边。

    4 后继函数$Successor(u)$为节点$u$的后继结点。后继定义为树中大于该节点的最小的节点。在上图中节21的后继为23,节点17的后继为19,节点23的后继为26.

     

  • 相关阅读:
    JavaScript数据结构——模仿ES6中定义的类似的Set类
    webpack简单的项目配置发生的错误
    三国
    把握中国经济的大局与动力
    人生道路
    C++
    https://计算机等级分类总结
    https://计算机四级
    https://计算机三级
    https://计算机二级
  • 原文地址:https://www.cnblogs.com/jianglangcaijin/p/6010958.html
Copyright © 2011-2022 走看看