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

2024-03-29 02:08

本文主要是介绍红黑树高度上限的证明(通俗易懂),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

h\leq 2\log_{2}(n+1)

下面开始证明过程

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

bh

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

bh(T)

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

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

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

n=2^{bh(T)}-1

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

n\geq 2^{bh(T)}-1                 (1)

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

bh(T)\geq \frac{h}{2}                       (2)

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

n\geq 2^{bh(T)}-1\geq 2^{\frac{h}{2}}-1

n\geq 2^{\frac{h}{2}}-1

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

h\leq 2\log_{2}(n+1)

这篇关于红黑树高度上限的证明(通俗易懂)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/857319

相关文章

Java中八大包装类举例详解(通俗易懂)

《Java中八大包装类举例详解(通俗易懂)》:本文主要介绍Java中的包装类,包括它们的作用、特点、用途以及如何进行装箱和拆箱,包装类还提供了许多实用方法,如转换、获取基本类型值、比较和类型检测,... 目录一、包装类(Wrapper Class)1、简要介绍2、包装类特点3、包装类用途二、装箱和拆箱1、装

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

设计模式之工厂模式(通俗易懂--代码辅助理解【Java版】)

文章目录 1、工厂模式概述1)特点:2)主要角色:3)工作流程:4)优点5)缺点6)适用场景 2、简单工厂模式(静态工厂模式)1) 在简单工厂模式中,有三个主要角色:2) 简单工厂模式的优点包括:3) 简单工厂模式也有一些限制和考虑因素:4) 简单工厂模式适用场景:5) 简单工厂UML类图:6) 代码示例: 3、工厂方法模式1) 在工厂方法模式中,有4个主要角色:2) 工厂方法模式的工作流程

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

240907-Gradio插入Mermaid流程图并自适应浏览器高度

A. 最终效果 B. 示例代码 import gradio as grmermaid_code = """<iframe srcdoc='<!DOCTYPE html><html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>My static Spa

红黑树的旋转

红黑树的基本性质 红黑树与普通的二叉搜索树不同,它在每个节点上附加了一个额外的属性——颜色,该颜色可以是红色或黑色。通过引入这些颜色,红黑树能够维持以下 5 个基本性质,以确保树的平衡性: 每个节点是红色或黑色。根节点是黑色。所有叶子节点(NIL 节点)是黑色。如果一个节点是红色的,那么它的两个子节点都是黑色的(即,红色节点不能有红色子节点)。从任一节点到其每个叶子节点的所有路径上都包含相同数

兔子--计算listview的高度,解决listview与scrollview控件冲突

/** * 计算ListView的高度 * * @param listView */ public void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter OrderGoodsAdapter listAdapter = (OrderGoodsAdapter) listView.getAda

C++笔记19•数据结构:红黑树(RBTree)•

红黑树 1.简介:         红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路 径会比其他路径长出俩倍,因而是接近平衡的。 当搜索二叉树退化为单支树时,搜索效率极低,为了使搜索效率高,建立平衡搜索二叉树就需要"平衡树"来解决。上一篇博客介绍了AVL树,这

业务和管理决定上限,技术决定下限

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 周末在看书的时候,看到一篇文章。关于讲解职场中的能力提升。 很多技术在从业之初都有比较简单的想法: 我很喜欢技术,我就想一直深入做技术,成为技术高手。至于业务和管理,还是让别人去搞定吧。做管理要处理各种乱七八糟的事情,要参加各种无聊的会议;做业务要跟形形色色的客户打交道,要揣摩客户的想法,这些事情我都不想去掺和。大家分工合作,各自做