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

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版】)

文章目录 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树,这

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

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

智能匹配新高度:相亲交友系统如何运用AI技术提升用户体验

在数字化时代,相亲交友系统正逐渐融入人工智能(AI)技术,以提升用户体验和匹配效率。AI的引入不仅改变了传统的交友方式,还为用户带来了更加个性化和精准的交友体验。以下是一篇关于如何运用AI技术提升相亲交友系统用户体验的文章。 智能匹配新高度:相亲交友系统如何运用AI技术提升用户体验 随着人工智能技术的飞速发展,相亲交友系统正迎来一场革命。AI的引入不仅提高了匹配的精准度,还极大地丰富了

cesium 使用异步函数 getHeightAtPoint,获取指定经纬度点的地形高度。

这个函数使用 CesiumJS 库的 sampleTerrain 方法来获取地形数据。下面是代码的详细解释: async getHeightAtPoint(LngLat) {// 将经纬度转为 Cartographic 对象let cartographics = [Cesium.Cartographic.fromDegrees(LngLat[0], LngLat[1])];// console.

一种极简的余弦定理证明方法

余弦定理的证明方法有很多种,这里介绍一种极简的证明方法。该方法是本人在工作中推导公式,无意中发现的。证明非常简单,下面简单做下记录。   如上图为任意三角形ABC,以点C为原点,建立直角坐标系(x轴方向任意,y轴与x轴垂直),x轴与CB夹角为 θ 1 \theta_1 θ1​,x轴与CA夹角为 θ 2 \theta_2 θ2​。点B的坐标为 ( a c o s θ 1 , a s i n θ