通过“数学归纳法”对红黑树的时间复杂度O(lgn)进行证明

红黑树的时间复杂度为O(lgn),当且仅当"节点数为n的一棵红黑树的高度满足O(lgn)的要求"

证明如下:

图片内容截取自博客:http://www.cnblogs.com/skywang12345/p/3245399.html

下面通过数学归纳法,证明高度为h的红黑树,其包含的内节点个数至少为2^(bh(x)) -1

  1. 当 h = 0:
    内节点个数为0,bh(x) = 0,原命题显然成立
  2. 当 h > 0,且树的高度为h-1,其黑色高度至少为bh(x) - 1,所以该树包含的内节点个数至少为2^(bh(x)-1) -1.
  3. 当h > 0,且树的高度为h时,
    对于节点X的左右子树,其黑色高度为bh(x)或者bh(x) - 1
    根据(2)已知:X的左右子树,即为高度h-1的节点,其包含的内节点至少为2^(bh(x)-1) -1。
    因此:节点X包含的节点数至少为:2*(2^(bh(x)-1) -1) + 1 = 2^(bh(x)) -1
    所以原命题成立,证毕

红黑树时间复杂度证明(O(lgn))相关推荐

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

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

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

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

  3. 《算法导论3rd第十三章》红黑树

    前言 红黑树是一种较为"平衡的"二叉查找树.它能保证最坏的情况下其基本操作时间为O(lgn). 红黑树的性质 红黑树 是一种二叉查找树,但在每个结点上增加了一个存储位表示结点的颜色 ...

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

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

  5. 红黑树相关定理及其证明

    红黑树有一条性质要求:如果一个节点为红色的,则它的两个子节点都是黑色.这保证了:从根到叶节点(不包括根节点)的任何一条路径上都至少有一半的节点是黑色的.(红黑树的性质还要求:对每一个节点,从该节点到其 ...

  6. 【题集】AVL树、伸展树、红黑树、二叉查找树、替罪羊树的时间复杂度

    目录 1. AVL树 2.伸展树 3.红黑树 4.二叉查找树 5.替罪羊树 1. AVL树 AVL树是最先发明的自平衡二叉查找树.在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平 ...

  7. 红黑树高度上限(2lg(n+1)证明.

    UTF8gbsn 红黑树介绍 红黑树是一颗二叉树,并满足以下属性. 每一个节点要么红色要么黑色. 根节点是黑色. 所有叶子节点NIL是黑色. 红色节点的左右孩子必定是黑色节点. 从任何一个节点出发,并 ...

  8. AVL树、splay树(伸展树)和红黑树比较

    AVL树.splay树(伸展树)和红黑树比较 一.AVL树: 优点:查找.插入和删除,最坏复杂度均为O(logN).实现操作简单 如过是随机插入或者删除,其理论上可以得到O(logN)的复杂度,但是实 ...

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

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

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

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

最新文章

  1. Shell函数:Shell函数返回值、删除函数、在终端调用函数
  2. html插音乐怎么设置样式,是否可以设置html5音频标签的样式?
  3. meta标签的常见用法
  4. python import 路径设置
  5. C语言学习笔记--数组参数和指针参数
  6. python为什么会出现无响应怎么办_python定时检测无响应进程并重启的实例代码
  7. 缩写月份单词python_一月到十二月份的英语单词和缩写形式
  8. android常用快捷键大全,AndroidStudio 快捷键使用总结大全
  9. java包是什么意思_java中的“包”到底是什么意思?
  10. 有了它,将大大丰富VR内容,3D VR摄像机Vuze VR开启预定
  11. 微信小程序学习笔记3
  12. (十一)IPSec协议
  13. pixhawk RC信号传输流程 代码版本pixhawk1.5.5
  14. 谷歌浏览器拓展及脚本安装入门简介
  15. Git(5) SourceTree安装使用
  16. HTML 练习案例旅游网站首页
  17. 多门店共享无人自助洗车系统小程序开发
  18. 华为矿鸿操作系统横空出世,煤矿智能化开启新篇章
  19. 硬件vendor id查询对照列表
  20. strchr函数的使用

热门文章

  1. 仿宋小二在html中怎么设置,HTML简短设置字体
  2. 3种团队分组适应项目_分组团队竞赛活动方案
  3. 为什么越来越多的人选择FUP T10S系列超声波探伤仪
  4. matlab 稀疏矩阵求 特征值
  5. day12 三大神器
  6. wps居中对齐不在中间_如何解决wps表格居中调整
  7. AQL学习笔记(二)--文档的创建
  8. 伴随矩阵例题_§6_伴随矩阵及习题_精品.ppt
  9. 加拿大java技术移民_加拿大技术移民分析贴之新手入门级!
  10. Android应用启动白屏问题解决办法