红黑树

作者: 半路和尚怎么出家 | 来源:发表于2018-11-18 23:16 被阅读0次

在记录红黑树结构之前,先了解一下平衡二叉树

满二叉树
满二叉树:除了叶子结点外其他节点均有左右孩子节点
avl树对中平衡二叉树的要求
avl中的二叉树,对于任意一个节点,其左子树和右子树的高度差不能超过一
堆中的完全二叉树
完全二叉树:将节点按照从左到右一层一层的结构全部铺开即为满二叉树,完全二叉树的空缺部分一定在二叉树的右下部分,且整个树的叶子节点,最大深度值和最下深度值相差不超过一

平衡二叉树的定义

平衡二叉树:对于任意一个节点,其左子树和右子树的高度差不能超过一,可以通过平衡因子(平衡因子:即当前节点的左右孩子节点的高度差)来判断该二叉树是否为平衡二叉树(当前节点的高度计算:左右孩子节点中高度高的一方的高度+1即为当前节点高度)


平衡二叉树的定义

红黑树定义

红黑树也是二分搜索树,同时是平衡二叉树

红黑树定义

在说红黑树前,先来了解一下2-3树

2-3树
2-3树满足二分搜索树的性质(对于2节点来说,左节点小于当前节点,右节点大于当前节点,而对于3节点来说,左节点小于当前节点所有的值,中节点的值介于当前节点中的两个节点值之间,右节点大于当前节点所有的值),但不是二叉树
2-3树是绝对平衡的二叉树(从根节点到任意叶子节点所经过的节点数一定是相同的)这其中涉及到节点融合,在此不做详述

那么2-3树是如何和红黑树等价的呢?

对于2节点来说,没什么区别,但是对于三节点来说,在红黑树中我们将b单独作为一个节点,作为c的子节点,并且b节点中保存有它和c节点在2-3树中的关系
2-3树转化成红黑树
红黑树是一个保持黑平衡的二叉树
  • 红黑树添加节点左旋转


    旋转前
    旋转后
    左旋转代码
  • 红黑树添加节点-颜色翻转
    颜色翻转
    因中间节点仍需向上融合,所以给它赋值成红色
    代码实现
  • 红黑树添加节点-右旋转


    旋转前
    旋转后
    旋转后进行颜色翻转
    翻转后
    代码
  • 红黑树添加节点-另一种情况


    添加的节点值大小介于三节点的两个值之间
    复用之前定义的子过程,先对37-40进行左旋转,然后对40-42进行右旋转,最后整理做颜色翻转
  • 性能总结
    性能总结
    红黑树在维持树平衡上的开销小于avl树,avl在添加或删除数据时,为了保持其本身的平衡二叉树的特性,需要不停地做左旋转或者右旋转操作;至于普通的二分搜索树,当数据的随机性较高时,它的添加性能很好,但是当添加的数据高度有序时,那么他就完了

左倾红黑树是较为常见的红黑树实现方式

左倾红黑树

另一种统计性能优秀的树结构

伸展树

小结:这里记录的只是红黑树等价于2-3树,并且按照左倾的原则进行的实现,实际上红黑树还可以等价于2-4树进行实现,不管是哪种实现方式,只要最后的树结构满足红黑树的五个特性,那么我们就可以称它为红黑树

相关文章

  • 数据结构—树—红黑树

    红黑树概述 红黑树的插入 红黑树的删除

  • TreeMap

    需要先了解红黑树,这是之前分析红黑树的文章。之前在分析红黑树时,我认为红黑树=二叉查找树+红黑平衡,关于二叉查找树...

  • 数据结构与算法-AVL 红黑树

    AVL树AVL树 算法红黑树红黑树 B站

  • [转载]红黑树

    https://zhuanlan.zhihu.com/p/24367771红黑树简介红黑树插入红黑树删除

  • 拿下红黑树

    红黑树 红黑树、2-3树的简单定义: 实现红黑树的基本结构以及添加操作(维护定义,左旋、右旋、颜色反转) 红黑树与...

  • 红黑树

    啥是红黑树,红黑树 = 二叉树

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

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

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

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

  • Golang红黑树

    红黑树 红黑树是每个节点都带有颜色属性(红色或黑色)的二叉查找树。红黑树也属于自平衡二叉查找树。 红黑树具有如下性...

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

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

网友评论

      本文标题:红黑树

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