带你读《图解算法小抄》十二、树(8)

简介: 带你读《图解算法小抄》十二、树(8)

带你读《图解算法小抄》十二、树(7)https://developer.aliyun.com/article/1348179?groupCode=tech_library

1. 红黑树

红黑树是一种自平衡的二叉搜索树,常用于计算机科学中。二叉树的每个节点都有一个额外的位,这个位通常被解释为节点的颜色(红色或黑色)。通过使用这些颜色位,在插入和删除操作期间保持树的近似平衡。

 

红黑树通过以满足一定属性的方式将树中的每个节点染成两种颜色之一来保持平衡,这些属性共同限制了树在最坏情况下的不平衡程度。当树被修改时,新树随后被重新排列和染色,以恢复颜色属性。这些属性被设计成能够高效地执行重新排列和染色操作。

 

红黑树的平衡并不完美,但足以保证在O(log n)的时间内进行搜索,其中n是树中的元素总数。插入、删除操作以及树的重新排列和染色也可以在O(log n)的时间内完成。

 

以下是红黑树的示例。

 

image.png 

 

1属性

除了二叉搜索树的要求之外,红黑树还必须满足以下条件:

 

每个节点要么是红色,要么是黑色。

根节点是黑色。这条规则有时会被省略,因为根节点总是可以从红色更改为黑色,但不一定反过来。所以这条规则对分析影响不大。

所有叶子节点(NIL节点)都是黑色。

如果一个节点是红色,则它的两个子节点都是黑色。

从给定节点到其任意后代NIL节点的每条路径上包含相同数量的黑色节点。

一些定义:从根节点到一个节点的黑色节点数称为该节点的黑深度;从根节点到叶子节点的所有路径中的黑色节点数目相等,称为红黑树的黑高度。

 

这些约束条件强制红黑树具有一个关键的性质:从根节点到最远的叶子节点的路径长度不会超过从根节点到最近的叶子节点的路径长度的两倍。结果是,树大致上是高度平衡的。由于插入、删除和查找值等操作的最坏情况时间与树的高度成比例,这种对高度的理论上界使得红黑树在最坏情况下具有高效性,而不像普通的二叉搜索树那样。

2插入时的平衡

如果叔叔节点是红色

image.png 

如果叔叔节点是黑色

左左情况(p是g的左子节点,x是p的左子节点)

左右情况(p是g的左子节点,x是p的右子节点)

右右情况(p是g的右子节点,x是p的右子节点)

右左情况(p是g的右子节点,x是p的左子节点)

带你读《图解算法小抄》十二、树(9)https://developer.aliyun.com/article/1348176?groupCode=tech_library

相关文章
|
19天前
|
机器学习/深度学习 数据采集 算法
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
|
4天前
|
算法 C++ 索引
分享一个关于Avl树的迭代器算法
该文介绍了无parent指针的AVL树迭代实现,提出了一种仅使用少量栈空间的双向迭代算法。算法分为初始化、前向迭代和后向迭代三部分。初始化时,根据起始点(最小或最大值)填充栈,然后根据状态进行前向或后向迭代。前向迭代检查当前节点的右子节点,后向迭代检查左子节点。算法通过堆栈维持双向迭代,解决了节点丢失和失序问题。此外,还讨论了算法在多线程环境下的同步问题和可能的解决方案。
|
5天前
|
机器学习/深度学习 算法 API
【机器学习】Python中的决策树算法探索
决策树作为机器学习中的一种基础且强大的算法,因其易于理解和实现、能够处理分类和回归任务的特性而广受欢迎。本文旨在深入浅出地介绍决策树算法的基本原理,并通过Python编程语言实践其应用,帮助读者掌握如何利用Python构建及优化决策树模型。本文预计分为以下几个部分:决策树基础理论、Python中实现决策树的库介绍、实战案例分析、模型评估与调优方法,以及决策树算法的局限性与未来展望。
13 0
|
10天前
|
存储 算法 C++
c++算法学习笔记 (8) 树与图部分
c++算法学习笔记 (8) 树与图部分
|
14天前
|
存储 移动开发 算法
数据结构与算法⑩(第四章_上)树和二叉树和堆的概念及结构(下)
数据结构与算法⑩(第四章_上)树和二叉树和堆的概念及结构
27 0
|
14天前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法⑩(第四章_上)树和二叉树和堆的概念及结构(上)
数据结构与算法⑩(第四章_上)树和二叉树和堆的概念及结构
13 0
|
16天前
|
机器学习/深度学习 算法 数据处理
探索机器学习中的决策树算法
【5月更文挑战第18天】探索机器学习中的决策树算法,一种基于树形结构的监督学习,常用于分类和回归。算法通过递归划分数据,选择最优特征以提高子集纯净度。优点包括直观、高效、健壮和可解释,但易过拟合、对连续数据处理不佳且不稳定。广泛应用于信贷风险评估、医疗诊断和商品推荐等领域。优化方法包括集成学习、特征工程、剪枝策略和参数调优。
|
19天前
|
机器学习/深度学习 算法
理解并应用机器学习算法:决策树
【5月更文挑战第12天】决策树是直观的分类与回归机器学习算法,通过树状结构模拟决策过程。每个内部节点代表特征属性,分支代表属性取值,叶子节点代表类别。构建过程包括特征选择(如信息增益、基尼指数等)、决策树生成和剪枝(预剪枝和后剪枝)以防止过拟合。广泛应用在信贷风险评估、医疗诊断等领域。理解并掌握决策树有助于解决实际问题。
|
19天前
|
存储 缓存 算法
数据结构与算法 树(B树,B+树,红黑树待完善)
数据结构与算法 树(B树,B+树,红黑树待完善)
22 0
|
19天前
|
机器学习/深度学习 算法 数据可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化