先把结论放上,设红黑树的高度为h,总结点数为n,那么h与n的关系就是

下面开始证明过程

首先,从任意节点出发,到其子树的叶子节点的路径中黑色节点的数量称为该节点的黑高,即

bh

我们设根节点为T,那么根节点的黑高就是

bh(T)

根据红黑树的性质,我们可知红色节点不可相邻(即红色节点的父节点和孩子节点均为黑色),但是性质中并没有对黑色节点进行要求

换句话说,所有的黑色节点可以挨在一起,一棵红黑树可以全部都是黑色节点。

那么我们就假设一棵只有黑色节点的红黑树(此假设仅作为一个思路提供,可能深究并不严谨),那么它的黑高bh(T)就是它的树高,我们可得这样一棵树的结点数为(根据树的高度与节点数量的关系

而对于红黑树而言,我们还要考虑红色节点,所以在此基础上加上红色节点的数量,那么不论加几个红色节点,只要增加,一定满足下式

                 (1)

而根据红黑树的性质,我们可知根节点的黑高bh(T)至少为h/2    (h为树高),也就是说

                       (2)

根据(1)式(2)式,我们可得

然后稍微计算一下就得到了

红黑树高度上限的证明(通俗易懂)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 红黑树的深入分析和实现

    RB-Tree, 红黑树(Red Black Tree) 1. 简介 1.1 定义 首先红黑树是一棵二叉搜索树,节点除了二叉树基本元素之外,还包括颜色信息,即节点包含key.left.right.p. ...

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

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

最新文章

  1. FFmpeg windows软件开发环境搭建
  2. Python + Selenium 自动发布文章(二):简书
  3. Android Camera设置setPreviewCallback实现onPreviewFrame接口实时截取每一帧视频流数据
  4. Django学习小记[2] —— Model
  5. 前美团产品专家罗鑫:谈谈我对增长这件事的理解
  6. oracle从一个表insert语句,Oracle 使用PLSQL 导出 一个表的insert 语句
  7. Acer Travelmate T3290笔记本拆机指南
  8. abap 添加alv上的工具栏的按钮_Excel里的置顶功能——快速访问工具栏
  9. Python中对列表list进行定义、增删改查、遍历及与元组的对比
  10. golang基础之初识
  11. 解决maven项目jdbc报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
  12. DNN Mail功能介绍 [DNN 3.2.2]
  13. SpringBoot学习---SpringSecurity与Shiro
  14. python调用v8_Python 安装 V8 引擎 – pyv8
  15. 集成 push kit 签名配置报6003/收不到华为推送
  16. 即席查询-Kylin
  17. Ubuntu软件中心的完全启用
  18. 有理数加法C语言pta,有理数
  19. 手把手带你了解Spark作业“体检报告” --Spark UI
  20. 硬盘安装archlinux

热门文章

  1. 2020,咋赚钱?|【常垒·常识】
  2. Spring Aop详解(无参和带参)
  3. 小学生如何学计算机,作为小学生该如何学编程?
  4. 《赖氏经典英语语法》第三集
  5. 爱思助手更新后无法连接服务器,爱思助手无法连接手机怎么办 爱思助手连接失败问题解决办法...
  6. 亚马逊防关联方法适合shopee平台吗?
  7. win10 软路由_软路由和硬路由的区别分析
  8. linux清理根目录空间,如何快速清理Linux磁盘空间
  9. beamer插入参考文献并引用(BibTex)
  10. 南大计算机系统基础实验PA0笔记