首页 > 其他分享 >数据结构:红黑树

数据结构:红黑树

时间:2024-05-14 09:19:46浏览次数:16  
标签:node 黑色 parent 孩子 红黑树 grandparent 数据结构 节点

满足五条性质:

  1. 根节点一定是黑色

  2. 叶节点一定是黑色空心

  3. 节点非黑即红

  4. 红色节点孩子节点一定是黑色的

    即不会出现连续的红色节点

  5. 任意一个节点到叶节点路径上黑色节点数量一样多

 

右旋操作:
 1. 该节点和左孩子断开连接
 2. 左孩子替代该节点位置
 3. 左孩子的右节点成为原节点的左孩子
 4. 原节点成为左孩子的右孩子

 

插入操作:

  1. 按照二叉查找树的方式插入

  2. 将插入的新节点染红

  3. 如果其和parent节点都为红色,则需要双红修正

  双红修正

  情况1:uncle节点存在且为红色

    1.parent和uncle都调整为黑色,grandparent调整为红色,node设置为grandparent

    2. 检查当前node也就是grandparent是否为根节点,如果不是继续调整

 

  情况2:uncle节点不存在或者为黑色

    情况2.1:node为parent的左孩子

      1.parent染黑,grandparent染红

      2. grandparent右旋

    情况2.2:node为parent的右孩子

      1. node染黑,grandparent染红

      2. parent左旋,grandparent右旋

 

 

 

 

标签:node,黑色,parent,孩子,红黑树,grandparent,数据结构,节点
From: https://www.cnblogs.com/toriyung/p/18190499

相关文章

  • (转载)数据结构-02 中缀表达式转后缀表达式并计算值
    1.图解中缀表达式转后缀表达式通过 数据结构-01-图解后缀表达式值计算方式 我们了解到后缀表达式(例如:931-3*+102/+)对计算机运算的方便,但是它却让我们这些人类十分的难受,因此我们需要在设计一个,中缀表达式转后缀表达式的程序来一劳永逸. 规则:依次遍历表达式,1.如......
  • (转载)数据结构-01-图解后缀表达式值计算方式
    目录:数据结构-01-图解后缀表达式值计算方式数据结构-02图解中缀表达式转后缀表达式并计算值1.简介问题:我们平常使用的数学表达式大多数是“中缀表达式”例如:9+(3-1)×3+10÷2,对人比较友好,但是这个对计算机计算并不友好,因为计算机无法智能判断运算顺序的问题(比如说乘法加......
  • 数据结构学习笔记-先序遍历森林
    先序遍历森林问题描述:设计算法输出先序遍历的森林节点及其所在的层次【算法设计思想】1.数据结构定义首先,定义二叉树节点的数据结构。每个节点包含存储数据的data字段,以及指向左右子节点的指针(lChild和rChild)。这种数据结构是二叉树和森林表示的基础。2.先序遍历单棵树设......
  • 数据结构学习笔记-递归求解森林高度
    森林的高度递归求解问题描述:设计算法求解森林的高度【算法设计思想】两个函数,一个用于计算单个二叉树的高度,另一个用于计算二叉树森林(即一组二叉树)的最大高度。下面是对两个函数的详细解释:1.treeHeight函数这个函数用于计算单个二叉树的高度。二叉树的高度定义为从根节点到......
  • TheAlgorithms/C - 各种基础算法、数据结构的 C 语言实现+armink/SFUD - 一款基于 JED
    1、OpenMV-RT-基于恩智浦i.MXRT系列的开源机器视觉AI模块OpenMV-RT是一款基于恩智浦最近主打的i.MXRT超高性能系列MCU的视觉模块,模块设计者是恩智浦大牛工程师宋岩(对,就是ARMCortex-M3权威指南中文版作者)。模块源代码: https://github.com/RockySong/micropython......
  • 1.1数据结构基本概念
    1.1数据结构基本概念什么是数据?数据是信息的载体,是描述客观事务属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合(二进制0和1)。数据事计算机程序加工的原料。数据元素、数据项数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元......
  • 数据结构学习01--栈
    栈栈的特性栈的基本结构我们可以把栈想象成一个装有弹珠的瓶子,先放进去的弹珠在瓶子底部,每次只能将顶部的弹珠倒出。栈的特点由图可以很好的知道后进先出栈的实际应用简单栈栈的概念非常简单,但把这个数据结构运用得当是需要充分理解的。应用1:判断字符串是否合法特殊情......
  • c语言 数据结构,把数据整体循环左(右)移p个位置
    思路:n为数组的长度(利用线性代数的思路)1.左移:把第1到第p个看成集合A,把第p+1到第n个看成集合B,则需要推导AB->BA,过程(A-1)*(B-1)->( (A-1)*(B-1))-1=BA2.右移:把第1到第n-p个看成集合A,把第n-p+1到第n个看成集合B,则需要推导AB->BA,过程(A-1)*(B-1)->( (A-1)*(B-1))-1 =BA 时......
  • struct:Python二进制数据结构
    在C/C++语言中,struct被称为结构体。而在Python中,struct是一个专门的库,用于处理字节串与原生Python数据结构类型之间的转换。本篇,将详细介绍二进制数据结构struct的使用方式。函数与Struct类struct库包含了一组处理结构值得模块级函数,以及一个Struct类。格式指示符将由字符串格......
  • 数据结构
    数据结构链表struct结构体构造链表//定义ListNode结构、三种构造函数structListNode{intval;ListNode*next;ListNode():val(0),next(nullptr){}ListNode(intx):val(x),next(nullptr){}ListNode(intx,ListNode*next):val(x)......