RedBTree 红黑树
概述:先来看下算法导论对R-B Tree的介绍:
红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。
通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。
基本二叉树存在的不足:如图
上图转载其他作者博客。
红黑树多了相关的数据结构的约束,这个约束就是 红黑树的特性:
红黑树的特性
<!--[if !supportLists]-->v <!--[endif]-->每个结点要么是红的,要么是黑的。
<!--[if !supportLists]-->v <!--[endif]-->根结点是黑的。
<!--[if !supportLists]-->v <!--[endif]-->每个叶结点,即空结点(NIL)是黑的。
<!--[if !supportLists]-->v <!--[endif]-->如果一个结点是红的,那么它的俩个儿子都是黑的。
<!--[if !supportLists]-->v <!--[endif]-->对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。
红黑树的五个特性的限制,就能抑制二叉树的这种最坏的数据树的出现,到了一种相对不平衡的时候,条件的约束就需要对整棵树进行旋转,如下图
初始的红黑树,然后新添加一个元素:4
将4置为红色满足,从任何节点到叶子节点,中间的黑节点的数量一致,然后不能出现父子都是红色的条件制约。于是需要变化:
把中间两个节点和上一级的节点颜色互换,同能的达到了任何节点到叶子节点的黑色节点数量一致,但是明显的红色节点再次出现了父子同色。
当前节点的父节点是红色,叔叔节点是黑色,当前节点是其父节点的右子对策:当前节点的父节点做为新的当前节点,以新当前节点为支点左旋。如下图所示此时就需要旋转了:
结果就是将节点 7 移到了 节点2 的父一级,并将节点 7 的那些单节点再转移到节点2 的右边,保持了对数据的对称性,为完美二叉树做数据处理,但是问题又来了,继续满足了节点到叶节点的黑色数量一致,但是两个红色节点为父子还是一样不符合要求,而且7的父节点下面都是单节点,因此,这时父节点11 就顺势要变成7的右节点,且7可以变成root了,那么7 就可以变色成黑色了,而8 可以旋转到11下面做左节点,11变成红色,如图:
这时的二叉树即符合要求又在对称性上堪称完美,这个二叉树才是真正的完美二叉树,这时我要提一提二叉树和红黑二叉树的却别了。
红黑二叉树的本质就是一颗二叉树,但是它独有的特性使它在二叉树上又多了一份自我完善的数据算法,因此,红黑二叉树在查找数据的时候是非常标准的 o(logN) 。
红黑二叉树我也会在接下来的几天将实现简单又好理解的java 代码贴出来供大家鉴赏,OK 今天的工作之余就写这么多了。
不知道怎么把图片添加上去,粘贴都粘贴不上,我把文档上传了,有兴趣的便宜可以下载的看
相关推荐
数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和存储数据,以便于进行各种操作。上海交通大学的数据结构课件是学习这一主题的重要资源,它涵盖了广泛的知识点,帮助学生深入理解数据结构...
### 数据结构基础知识点详解 #### 一、基础知识概念解析 **1. 算法的复杂性** - **题目**: 算法的计算量的大小称为计算的()。 - **答案**: B. 复杂性 - **解析**: 算法的复杂性通常用来衡量算法执行效率的...
西安理工大学863数据结构真题集锦 作为一名 IT 行业大师,我将根据提供的文件信息,生成相关的知识点,以下是详细的输出结果: 一、数据结构概述 数据结构是计算机科学中的一门基础学科,旨在研究如何存储和组织...
数据结构是计算机科学中的核心课程,它探讨如何高效地组织和管理数据,以便进行快速查找、插入和删除等操作。这份“数据结构1800试题”提供了丰富的练习题目,涵盖了数据结构的主要概念和算法,适合学生进行复习和...
数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便于快速查找、存储和处理。这份“数据结构的pdf课件”是学习这一主题的重要资源,尤其对于初学者来说,它能提供系统性的指导和...
数据结构是计算机科学中的核心概念,它涉及到如何在计算机中有效地组织、存储和处理大量数据。数据结构的设计和选择直接影响到算法的效率以及程序的性能。在这个领域,我们研究各种不同的数据组织方式,如数组、链表...
"Java常见数据结构面试题(带答案)" 以下是对Java常见数据结构面试题的知识点总结: 栈和队列 * 栈和队列的共同特点是只允许在端点处插入和删除元素。 * 栈通常采用的两种存储结构是线性存储结构和链表存储结构...
### 数据结构的基本概念 数据结构是计算机存储、组织数据的方式。它旨在使数据的存取和处理更加高效。数据结构通常由数据对象和数据关系两部分构成。数据对象是指具有相同数据类型的元素的集合;数据关系则定义了...
数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和存储数据,以便于进行各种操作。唐发根教授的数据结构教程是一部深受初学者欢迎的教材,它全面且深入地介绍了数据结构的基本概念、算法和...
资源名称:数据结构与算法视频课程(59集)资源目录:【】mysql视频教程第41讲存储过程【】数据结构与算法_1.10算法的评价【】数据结构与算法_1.1编程的灵魂:数据结构 算法【】数据结构与算法_1.2算法的作用:猜...
"数据结构和算法分析 C++版 第三版" 本资源是《数据结构和算法分析 C++版 第三版》的摘要信息,作者是Clifford A. Shaffer,来自 Virginia Tech 的计算机科学系。该书将数据结构和算法分析的基本概念和技术进行了...
【北京邮电大学809数据结构复习指南】是一份由成功上岸北邮AI院的学长编写的详尽复习资料,旨在帮助备考北邮研究生考试的学生,特别是那些选择809数据结构作为专业课的考生。复习指南依据北邮研究生招生网的考试大纲...
数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据。在准备考研的道路上,深入理解和掌握数据结构至关重要,因为它是算法设计和分析的基础。"考研王道数据结构代码.zip"这个压缩包包含...
数据结构题集(C语言版)完整答案 本资源提供了数据结构题集的完整答案,涵盖了数据结构的基本概念、抽象数据类型、存储结构、数据类型等方面的知识点。下面是对资源中提到的知识点的详细解释: 1. 数据结构的基本...
数据结构是计算机科学中至关重要的基础概念,它研究的是非数值计算问题中计算机的数据组织方式、它们之间的关系以及相应的操作。本章主要介绍了数据结构的基本概念、抽象数据类型(ADT)的定义与实现,以及如何用类...
数据结构是计算机科学与技术领域中的核心课程之一,它研究如何在计算机中组织和存储数据,以便高效地访问和修改。严蔚敏教授编著的《数据结构》是一本广泛被采用的经典教材,深受广大计算机专业学生和研究人员的青睐...
本书从讲解什么是数据结构开始,延伸至高级数据结构和算法分析,强调数据结构和问题求解技术。本书的目的是从抽象思维和问题求解的观点提供对数据结构的实用介绍,试图包含有关数据结构、算法分析及其Java实现的所有...
"西北民族大学--数据结构考试卷答案.pdf" 以下是根据提供的文件信息生成的相关知识点: 数据结构定义 数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。 数据结构分类 数据结构可以分为...
数据结构是计算机科学的基础课程,它探讨如何有效地组织和管理数据,以便进行高效的数据操作。在C语言描述下,耿国华的《数据结构》教材是深入理解这一主题的重要资源,而课后习题答案则提供了检验学习效果的途径。 ...
数据结构是计算机科学中的核心课程,它探讨了如何在计算机中组织、存储和处理数据,以便高效地执行各种操作。王卓教授的部分第一部分PPT深入浅出地讲解了这一主题,尤其对于初学者来说是一份宝贵的资源。在这个部分...