IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 红黑树&平衡二叉搜索树(AVL) -> 正文阅读

[数据结构与算法]红黑树&平衡二叉搜索树(AVL)

平衡因子:左子树高-右子树高


红黑树(red black tree_RBT)自(相对)平衡二叉查找树
属于二叉平衡查找树
(1)结点是黑色或者红色的
(2)根属性:根节点必须是黑色
(3)红色结点的孩子必须是黑色的,黑色结点的孩子可黑可红(从根出发到空叶子的简单路径,不存在连续红色结点)
(4)空叶子结点是黑色
(5)从根出发到所有空叶子的简单路径中,黑色结点数量相等(包括自身和空叶子)

最短路径是全黑的路径;最长的路径是红黑相间的;
最长路径<2*最短路径
查找的时复OlogN

红黑树的高度最多是2*log(n+1)
黑色高度:到叶子结点经过的非叶子黑色结点个数(黑色结点包括自身)

建树:
(1)初始插入是红色,先用BST的朴素插入法插到红黑树
(2)插完再染色或旋转(建树)
(插入):
?? ?【情况1】如果是空树,直接是黑色树根
?? ?如果不是空树,首先标记成红色
?? ??? ?【情况2】如果父亲结点是黑色就完成了
?? ??? ?如果父亲结点是红色:看父亲的兄弟结点
?? ??? ??? ?【情况3】如果兄弟结点是红色,将父亲和叔叔变成黑色,爷爷变成红色,将爷爷看成新插入的红色结点循环向上更改
?? ??? ??? ?如果兄弟结点是黑色或者null:
?? ??? ??? ??? ?【情况4】裙形:将子树填补完整并计算黑色高度,进行旋转后,保持黑色高度不变的原则涂色,其中局部根节点为黑色,减少迭代向上插入检查


?? ??? ??? ??? ?【情况5】腰形:先旋转化为裙形,再使用上述方法进行。


?? ??? ??? ?

二叉查找树(BST):查找效率同二分查找?
(1)中序序列是一个有序序列
(2)左子树< 根< 右子树
构建:
朴素插入:同查找
旋转:改变树的结构
?? ?右旋:原来的父节点变成了新的右孩子
?? ?左旋:原来的父节点变成了新的左孩子?


平衡二叉查找树(AVL树,绝对平衡):左右子树高度差小于等于1;ASL = h = 查找时复O(logn)
失去平衡:
LL:


RR:

代码思路:

RL:右孩子的左子树插入

?


LR:左孩子的右子树插入

?LR和RL的简化:

直接把C放在根节点处,然后将A及其子树和B及其子树放置在C的子树位置,然后将C的两个子树分别放在A和B的另一个子树位置。


按照朴素插入后发现不平衡,向上寻找根节点的平衡因子,找到第一个最小的不平衡树
最少的结点个数:Nh = (左子树)Nh-1 + Nh-2(右子树) + 1(根)
其中,N0 = 0,N1 = 1,N2 = 2

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:13:30  更:2022-05-06 11:14:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:50:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码