平衡二叉树中左旋和右旋:
1:计算平衡因子,根据平衡因子找出失衡类型,发现者,破坏者。
2:按照下面规则进行选着,构建新的平衡二叉树。
红黑树:
1:节点要么是红色,要么是黑色。
2:根节点肯定是黑色。
3:每个叶子的节点都是黑色的空节点(null)
4:每个红色节点的两个子节点都是黑色(红色节点肯定是拥有两个子节点,要么都是非空,要么都是空的),(从每个叶子到根的所有路径上不能有两个连续的红色节点)。
5:从任意节点到其叶子的所有路径包含的黑色节点个数相同
在插入红黑树的时候,节点默认是红色。
当新增节点破坏红黑树后怎么再平衡:分为以下几种情况:新增节点默认是红色
1:新增节点是根节点,不需要再平衡
2:新增节点的父节点为黑色,不会破坏红黑树,不需要再平衡。
3:新增节点的父节点是红色,且叔叔节点也是红色。
策略:将父节点和叔叔节点都涂黑,祖父节点涂红,若祖父节点是根节点,则已经达到平衡;
若祖父节点不是根节点,把当前节点指向祖父节点,从新的当前节点开始算起。
4:新增节点的父节点是红色,叔叔节点是黑色,新增节点是父节点的又子树
策略:以新增节点为支点左旋,将当前节点的父节点作为当前节点,从新的当前节点开始算起。
5:新增节点的父节点是红色,叔叔节点是黑色,新增节点是父节点的左子树
策略:将父节点图黑,祖父节点涂红,并以祖父节点为支点右旋,达到平衡。
删去节点后破坏红黑树后怎么办?
1:若删去节点有零个子节点
策略:1)若删去节点是根节点,直接删去
2)若删去节点是非空子节点,若删去节点是红色,则可以直接删去;若删去节点是黑色,则肯定会破坏平衡(因为它对应的这条路径肯定少了个黑节点),需要进行调整(没有规律)。
2:若删去的节点有一个非空子节点
https://www.cnblogs.com/cuizhu/p/9470340.html
https://blog.csdn.net/weixin_38629529/article/details/81171245
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人