维基百科

包含n个内部节点的红黑树的高度是 O(log(n))。

定义:

  • h(v) = 以节点v为根的子树的高度。
  • bh(v) = 从v到子树中任何叶子的黑色节点的数目(如果v是黑色则不计数它)(也叫做黑色高度)。

引理: 以节点v为根的子树有至少个内部节点。

引理的证明(通过归纳高度):

基础: h(v) = 0

如果v的高度是零则它必定是 nil,因此 bh(v) = 0。所以:

归纳假设: h(v) = k 的v有  个内部节点暗示了 h() = k+1 的  个内部节点。

因为  有 h() > 0 所以它是个内部节点。同样的它有黑色高度要么是 bh() 要么是 bh()-1 (依据是红色还是黑色)的两个儿子。通过归纳假设每个儿子都有至少  个内部接点,所以  有:

个内部节点。

使用这个引理我们现在可以展示出树的高度是对数性的。因为在从根到叶子的任何路径上至少有一半的节点是黑色(根据红黑树属性4),根的黑色高度至少是h(root)/2。通过引理我们得到:

因此根的高度是O(log(n))。

*******************************************************************************************************************

算法导论

引例:一棵有n个内节点的红黑树高度至多为2lg(n+1)

证明:

1.先证明某一节点x为根的子树中至少包含2^[bh(x)] - 1个内节点(归纳假设)

如果:x高度为0,则x必为叶子节点,这时以x为根的子树至少包含2^[bh(x)] - 1 = 2^0 - 1= 0,

考虑x为正数,并且x有两个孩子,两个孩子的高度为bh(x)或bh(x)-1(根据孩子自身的红黑性质决定),所以假设每个孩子至少包含2^[bh(x)-1] - 1个内节点,则x = 2*(2^[bh(x)-1] - 1) + 1(x本身),则x = 2^[bh(x)] - 1,得证

根据性质4(如果一个节点为红,则其孩子必为黑)可知,高度为h的树的黑高度至少为h/2

所以 n >= 2^(h/2) - 1,所以lg(n+1) <= h/2,所以可知一个有n个内节点的红黑树高度至多为2lg(n+1),得证

*******************************************************************************************************************

由此可知,从根节点到任意节点最多经历2lg(n+1)步,因此红黑树的时间复杂度为O(lgn)

参考文献:

算法导论

维基百科:http://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91

为什么红黑树的时间复杂度为lgn——渐进边界的证明相关推荐

  1. 红黑树的时间复杂度分析

    一.红黑树的基本属性. 红黑树的每个结点,要么是黑色,要么是红色. 根结点(root)一定是黑色. 所有红色结点不可以直接相连. 也即是,如果一个结点为红色,那么,它的爸爸或儿子,一定就是黑色,不可是 ...

  2. 红黑树的性质以及时间复杂度证明

    很久就想写一篇红黑树的博客,一直没有倒出时间,今天想稍微的总结下红黑树,但是并不想介绍如何的进行插入删除,以及怎么进行旋转,变色,本编文章主要讲解红黑树的时间复杂度的证明,要想证明红黑树的时间复杂度, ...

  3. 红黑树时间复杂度为什么是O(logn)?

    一.红黑树性质 结点必须是红色或者黑色. 根节点必须是黑色. 叶节点(NIL)必须是黑色(NIL节点无数据,是空节点). 如果一个节点是红色的,则它的子节点必须是黑色的. 从任一节点出发到其每个叶子节 ...

  4. 红黑树(一)之 原理和算法详细介绍---转帖

    目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树的基本操作(一) 左旋和右旋 5 红黑树的基本操作(二) 添加 6 红黑树的基本操作(三) 删除 作者:Sky W ...

  5. 红黑树,看不懂你找我

    文章目录 一:什么是红黑树 二:关于红黑树的一般操作 1.查找操作 2. 插入操作 2.1 新节点:我是红色的,我爹是红色的,我叔叔是黑色的 2.2 新节点:我是红色的,我爹是红色的,我叔叔也是红色的 ...

  6. Java数据结构与算法:红黑树

    概要 概述:R-B Tree,又称为"红黑树".本文参考了<算法导论>中红黑树相关知识,加之自己的理解,然后以图文的形式对红黑树进行说明.本文的主要内容包括:红黑树的特 ...

  7. 红黑树(一)之 原理和算法详细介绍

    出处:http://www.cnblogs.com/skywang12345/p/3245399.html 概要 目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树 ...

  8. 【Java深入研究】10、红黑树

    一.红黑树介绍 红黑树是二叉查找树,红黑树的时间复杂度为: O(lgn) 红黑树的特性: (1)每个节点或者是黑色,或者是红色. (2)根节点是黑色. (3)每个叶子节点(NIL)是黑色. [注意:这 ...

  9. 红黑树 —— 原理和算法详细介绍

    红黑树 -- 原理和算法详细介绍 R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为"红黑树",它一种特殊的二叉查找树.红黑树的每个节点上都有存储位 ...

  10. 红黑树的删除_红黑树

    红黑树是许多"平衡的"查找树中的一种,它能保证在最坏的情况下,基本的动态集合操作(插入和删除)的时间为O(lgh).我们先简单叙述二叉查找树的性质. 1.1 二叉查找树 二叉查找树 ...

最新文章

  1. .NET Core 构建跨平台的桌面应用
  2. ListView getChildCount 以及getChildAt 坑 误区指南
  3. linux 列出特定时间内修改的文件
  4. 如何用windbg查看_eprocess结构
  5. 计算机安全OSI安全框架
  6. LeetCode677. 键值映射(Trie树)
  7. 抖音python课程价格_抖音
  8. oracle安装要多久,一次耗时4天的oracle安装过程
  9. Description Resource Path Location Type Project configuration is not up-to-date with pom.xml. Select
  10. 【GPORF源码编译】GDB源码编译之gprof交叉编译
  11. python查天气预报_一个用Python编写抓取天气预报的代码示例
  12. 内网使用 IPV6 之 TunnelBroker隧道(6in4)篇
  13. 每天一个算法(简单)
  14. 例外被抛出且未被接住问题
  15. VS2008 安装顺序
  16. 【华为面试手撕代码】
  17. Win7 32 不能安装STM32 虚拟串口驱动解决方法
  18. 轻轻一扭,迎来温暖柔风,告别手脚冰凉,卡蛙桌面暖风机上手
  19. ubuntu conda、pip 设置代理
  20. python数字识别kaggle论文_基于Python语言Kaggle的数据集分析

热门文章

  1. 【JavaMailWeb】用户注册通过邮箱激活案例
  2. 用英文给领导写建议信
  3. 学会了,不会ps也能更换自己的证件照底色,制作自己的证件照
  4. html表格中加入分割线,表格分割线一分为三 WORD表格怎么插入一条竖的分割线
  5. Python三大神器之pip用法详解
  6. ITRS/GCRS/J2000坐标系的相互转换
  7. 怎么将拍的照片免费转成PDF文件呢
  8. Discuz!论坛系统模板目录结构注释说明(以default模板为例)
  9. 如何把图片裁剪为圆形
  10. 2019CCPCQHD Angle Beats