`
itliuxing
  • 浏览: 937 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据结构

阅读更多

RedBTree 红黑树

概述:先来看下算法导论对R-B Tree的介绍:

 

红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是RedBlack

通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。

 

基本二叉树存在的不足:如图

上图转载其他作者博客。

 

红黑树多了相关的数据结构的约束,这个约束就是  红黑树的特性:

红黑树的特性

<!--[if !supportLists]--><!--[endif]-->每个结点要么是红的,要么是黑的。

<!--[if !supportLists]--><!--[endif]-->根结点是黑的。

<!--[if !supportLists]--><!--[endif]-->每个叶结点,即空结点(NIL)是黑的。

<!--[if !supportLists]--><!--[endif]-->如果一个结点是红的,那么它的俩个儿子都是黑的。

<!--[if !supportLists]--><!--[endif]-->对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。

 

红黑树的五个特性的限制,就能抑制二叉树的这种最坏的数据树的出现,到了一种相对不平衡的时候,条件的约束就需要对整棵树进行旋转,如下图

 

初始的红黑树,然后新添加一个元素:4

 

 

4置为红色满足,从任何节点到叶子节点,中间的黑节点的数量一致,然后不能出现父子都是红色的条件制约。于是需要变化:

 

 

把中间两个节点和上一级的节点颜色互换,同能的达到了任何节点到叶子节点的黑色节点数量一致,但是明显的红色节点再次出现了父子同色。

 

当前节点的父节点是红色,叔叔节点是黑色,当前节点是其父节点的右子对策:当前节点的父节点做为新的当前节点,以新当前节点为支点左旋。如下图所示此时就需要旋转了:

 

 

结果就是将节点 7 移到了 节点2 的父一级,并将节点 7 的那些单节点再转移到节点2 的右边,保持了对数据的对称性,为完美二叉树做数据处理,但是问题又来了,继续满足了节点到叶节点的黑色数量一致,但是两个红色节点为父子还是一样不符合要求,而且7的父节点下面都是单节点,因此,这时父节点11 就顺势要变成7的右节点,且7可以变成root了,那么7 就可以变色成黑色了,而8 可以旋转到11下面做左节点,11变成红色,如图:

 

 

这时的二叉树即符合要求又在对称性上堪称完美,这个二叉树才是真正的完美二叉树,这时我要提一提二叉树和红黑二叉树的却别了。

 

红黑二叉树的本质就是一颗二叉树,但是它独有的特性使它在二叉树上又多了一份自我完善的数据算法,因此,红黑二叉树在查找数据的时候是非常标准的 o(logN)

 

红黑二叉树我也会在接下来的几天将实现简单又好理解的java 代码贴出来供大家鉴赏,OK 今天的工作之余就写这么多了。

 

不知道怎么把图片添加上去,粘贴都粘贴不上,我把文档上传了,有兴趣的便宜可以下载的看

分享到:
评论
1 楼 itliuxing 2016-12-23  
不好意思,图片不知道怎么不出来,我晚上弄弄这个

相关推荐

    PTA-数据结构与算法题目集.zip

    PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 ...

    上海交大数据结构课件 上海交大数据结构课件

    数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和存储数据,以便于进行各种操作。上海交通大学的数据结构课件是学习这一主题的重要资源,它涵盖了广泛的知识点,帮助学生深入理解数据结构...

    数据结构1800题(含详解答案)

    ### 数据结构基础知识点详解 #### 一、基础知识概念解析 **1. 算法的复杂性** - **题目**: 算法的计算量的大小称为计算的()。 - **答案**: B. 复杂性 - **解析**: 算法的复杂性通常用来衡量算法执行效率的...

    精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功!

    精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功! \数据结构flash演示\版本1 \数据结构flash演示\版本2 \数据结构flash演示\版本3 \数据结构flash演示\版本4 \数据结构flash演示\版本5 ...

    数据结构1800试题.pdf

    数据结构是计算机科学中的核心课程,它探讨如何高效地组织和管理数据,以便进行快速查找、插入和删除等操作。这份“数据结构1800试题”提供了丰富的练习题目,涵盖了数据结构的主要概念和算法,适合学生进行复习和...

    数据结构1800题(含答案)数据结构1800题(含答案)

    数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构...

    数据结构(第4版)习题及实验参考答案-数据结构复习资料完整版(c语言版).docx

    "数据结构(第4版)习题及实验参考答案-数据结构复习资料完整版(c语言版)" 本文档是关于数据结构的习题及实验参考答案,涵盖了数据结构的基础知识、逻辑结构、物理结构、算法、时间复杂度等方面。 数据结构基础 ...

    数据结构 数据结构 数据结构 数据结构 数据结构

    数据结构是计算机科学中的核心概念,它涉及到如何在计算机中有效地组织、存储和处理大量数据。数据结构的设计和选择直接影响到算法的效率以及程序的性能。在这个领域,我们研究各种不同的数据组织方式,如数组、链表...

    苏大872计算机-苏州大学《数据结构》20卷试真题库+答案.rar

    苏州大学《数据结构》20卷试真题库是一本涵盖数据结构基础知识、经典算法、应用实践等方面的试题集合,适用于计算机科学、计算机工程、软件工程等专业的学生以及从事计算机算法开发的程序员。本书以数据结构和算法为...

    数据结构的pdf课件

    数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便于快速查找、存储和处理。这份“数据结构的pdf课件”是学习这一主题的重要资源,尤其对于初学者来说,它能提供系统性的指导和...

    王道数据结构.zip

    《王道数据结构》是针对计算机科学与技术专业考研学子的重要参考资料,主要涵盖了数据结构的基础理论、算法设计以及分析等内容。这份压缩包包含了2019年和2020年的版本,无水印,适合考生们进行系统的学习和复习。 ...

    Java常见数据结构面试题(带答案)

    "Java常见数据结构面试题(带答案)" 以下是对Java常见数据结构面试题的知识点总结: 栈和队列 * 栈和队列的共同特点是只允许在端点处插入和删除元素。 * 栈通常采用的两种存储结构是线性存储结构和链表存储结构...

    数据结构-清华大学-严蔚敏

    清华大学严蔚敏教授所编著的《数据结构》是一本经典的教材,不仅覆盖了数据结构的基础理论,还结合了C语言的实践应用,成为学习数据结构的重要资源。 首先,数据结构的概念包括数据元素、数据项和数据对象等基本...

    数据结构与算法分析--C语言描述_数据结构与算法_

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。C语言因其高效、底层特性,常被用于实现数据结构和算法,使得程序更接近硬件,性能更优。本资源"数据结构与算法分析--C语言描述"是针对数据...

    数据结构(高一凡)

    数据结构是计算机科学中的核心课程,它探讨了如何在计算机中有效地存储和处理数据,以便进行高效的计算。《数据结构》是由高一凡编著的一本教材,它被设计为与严蔚敏的经典著作《数据结构(C语言描述)》相配套。这...

    浙江大学陈越数据结构课件

    数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便于执行各种操作。在本资源中,“浙江大学陈越数据结构课件”提供了丰富的学习材料,帮助学生深入理解这一重要领域。配合视频...

    数据结构教程 by 李春葆

    数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便于进行快速的存取和处理。李春葆教授的数据结构教程是一本广泛使用的教材,它深入浅出地介绍了这一领域的基本概念和算法。在这...

    数据结构(唐发根)

    数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和存储数据,以便于进行各种操作。唐发根教授的数据结构教程是一部深受初学者欢迎的教材,它全面且深入地介绍了数据结构的基本概念、算法和...

    数据结构与算法视频课程(59集)

    资源名称:数据结构与算法视频课程(59集)资源目录:【】mysql视频教程第41讲存储过程【】数据结构与算法_1.10算法的评价【】数据结构与算法_1.1编程的灵魂:数据结构 算法【】数据结构与算法_1.2算法的作用:猜...

Global site tag (gtag.js) - Google Analytics