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 今天的工作之余就写这么多了。
不知道怎么把图片添加上去,粘贴都粘贴不上,我把文档上传了,有兴趣的便宜可以下载的看
相关推荐
数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中组织、存储和管理数据,以便高效地进行各种操作。王道考研的数据结构PPT涵盖了这门学科的关键概念和技术,对于准备考研的学生来说,是一份非常有价值...
数据结构期末考试习题汇总 数据结构是计算机科学中研究非数值计算问题的重要领域,涉及到数据的存储、处理和表示。以下是数据结构期末考试习题汇总的知识点总结: 1. 数据结构的主要研究对象是非数值计算问题,...
PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 ...
1.本PPT为数据结构期末考点,完全适用期末,补考,重修的同学。 2.同时专升本,自考的同学也可以使用。 3.考研的同学可以用这套课件打基础,特别是零基础跨专业考计算机408或需要考数据结构的同学。 4.课件由c语言...
数据结构(C语言版)+严蔚敏+吴伟民.pdf
《数据结构Python》是一本专为那些对数据结构有浓厚兴趣但不倾向于使用C或C++语言学习的读者量身定制的书籍。本书通过Python语言深入浅出地讲解了数据结构的基本概念、原理和实现方法,旨在帮助读者理解并掌握数据...
"数据结构第二版(清华严蔚敏版)数据结构习题答案" 本资源摘要信息涵盖了数据结构的基本概念、逻辑结构、存储结构、抽象数据类型等知识点,并提供了详细的解释和例子。 数据结构基本概念 数据结构是相互之间存在...
数据结构是计算机科学中的核心课程,它探讨如何高效地组织和管理数据,以便进行快速查找、插入和删除等操作。这份“数据结构1800试题”提供了丰富的练习题目,涵盖了数据结构的主要概念和算法,适合学生进行复习和...
数据结构是计算机科学中的核心课程,对于准备考研的学子来说,掌握好数据结构至关重要。这份“2020 天勤数据结构 高分笔记 + 习题”资源包含了两个关键部分,即高分笔记和习题集,旨在帮助考生深入理解和应用数据...
数据结构11111111111111111111
数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便于快速查找、存储和处理。这份“数据结构的pdf课件”是学习这一主题的重要资源,尤其对于初学者来说,它能提供系统性的指导和...
王道数据结构思维导图无水印版
"数据结构基础" 数据结构基础知识是计算机科学的基础,涉及到算法、数据结构、软件工程、数据库操作等方面的知识。本篇文章将从数据结构的基本概念、逻辑结构、存储结构、线性结构、链式存储、树等方面进行介绍。 ...
### 数据结构基础知识点详解 #### 一、基础知识概念解析 **1. 算法的复杂性** - **题目**: 算法的计算量的大小称为计算的()。 - **答案**: B. 复杂性 - **解析**: 算法的复杂性通常用来衡量算法执行效率的...
数据结构题集(C语言版)完整答案 本资源提供了数据结构题集的完整答案,涵盖了数据结构的基本概念、抽象数据类型、存储结构、数据类型等方面的知识点。下面是对资源中提到的知识点的详细解释: 1. 数据结构的基本...
数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便于进行快速的存取和处理。李春葆教授的数据结构教程是一本广泛使用的教材,它深入浅出地介绍了这一领域的基本概念和算法。在这...
数据结构
数据结构
数据结构 数据结构 数据结构 数据结构 数据结构
数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。C语言因其高效、底层特性,常被用于实现数据结构和算法,使得程序更接近硬件,性能更优。本资源"数据结构与算法分析--C语言描述"是针对数据...