美文网首页数据库-mysql
19. 数据结构之红黑树

19. 数据结构之红黑树

作者: 光小月 | 来源:发表于2018-04-26 21:16 被阅读6次

定义

红黑树是一棵自平衡二叉树.

性质

(1)每个节点或者是黑色,或者是红色。 
(2)根节点是黑色。 
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!] 
(4)如果一个节点是红色的,则它的子节点必须是黑色的。 
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。

注意:
(01) 特性(3)中的叶子节点,是只为空(NIL或null)的节点。
(02) 特性(5),确保没有一条路径会比其他路径长出俩倍。因而,红黑树是相对是接近平衡的二叉树。

image.png

应用

红黑树广泛的应用在各种程序库中,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高。在linux内核的进行调度上面,C++中stl中的很多容器多采用了红黑树的算法,Java中的TreeMap也是采用了红黑树的算法来实现排序。

基本操作

旋转

红黑树的旋转相比二叉平衡树,要简单一点,因为其只有两种旋转操作,即左旋和右旋。
1. 左旋

是不是感觉上面的左旋很熟悉,其实就是平衡二叉树中的右右的这种情况,
用 x 右节点代替 x,其右节点的右子树保持不变,并且将其右节点的左子树赋给 x 的右子树,完毕。

2. 右旋

与左旋完全相反,用 y 左节点代替 y,其左节点的左子树保持不变,并且将其左节点的右子树赋给 y 的左子树,完毕。
    如何区分右旋 左旋 
    这是一个问题,但是仔细观察上面,就是左旋就是让旋转的节点变成左子树,右旋就是让旋转的节点变成右子树,
简单的总结一句话,
    左旋–>提右节点,变左子树
    右旋–>提左节点,变右子树

欢迎关注,以后会不定时更新!

摘自网上

相关文章

  • 数据结构 - 红黑树

    更多数据结构内容,请参考:数据结构 - 概要 简介 红黑树介绍请参考: 漫画:什么是红黑树? 面试旧敌之红黑树 红...

  • 19. 数据结构之红黑树

    定义 性质 注意:(01) 特性(3)中的叶子节点,是只为空(NIL或null)的节点。(02) 特性(5),确保...

  • 数据结构红黑树添加、修改原理分析

    源码分析大纲 数据结构解析 红黑树试下原理刨析 数据结构解析 1.红黑树 1.1 红黑树概念 红黑树(Red Bl...

  • hashmap源码分析

    HashMap的数据结构 从上图中可以很清楚的看到,HashMap的数据结构是数组+链表+红黑树(红黑树since...

  • 彻底理解红黑树(二)之 插入

    彻底理解红黑树(一)之 二叉搜索树彻底理解红黑树(二)之 插入彻底理解红黑树(三)之 删除 前言 红黑树的插入情况...

  • 彻底理解红黑树(三)之 删除

    彻底理解红黑树(一)之 二叉搜索树彻底理解红黑树(二)之 插入彻底理解红黑树(三)之 删除 前言 红黑树的删除情况...

  • Red-Black Tree

    红黑树 前段时间看到STL map使用的数据结构是红黑树,研究了一下。 红黑树的由来 红黑树是二叉查找树的升级版本...

  • JDK1.8 之 集合框架 TreeMap TreeSet

    了解 Tree 之前我们必须了解 红黑树 因为Tree 的数据结构就是红黑树 红黑树的特性(1)每个节点或者是黑色...

  • 数据结构08-红黑树

    数据结构08-红黑树 一、红黑树的介绍 红黑树(RBT)是每个节点都带有颜色属性的自平衡二叉查找树,颜色或红色或黑...

  • 数据结构-红黑树学习笔记(转)

    rbt(红黑树) 图解红黑树:https://www.jianshu.com/p/0eaea4cc5619数据结构...

网友评论

    本文标题:19. 数据结构之红黑树

    本文链接:https://www.haomeiwen.com/subject/grtvlftx.html