数据结构--二叉树

目录

有序二叉树:

平衡二叉树:

234树:

红黑树

红黑树特点:

为什么红黑树是最优二叉树?

哈夫曼树和哈夫曼编码


有序二叉树:

平衡二叉树:

在有序二叉树的基础上得来的,且左右子树的高度差绝对值不能超过1.

调整策略:

1、LL型调整策略

注意要找造成不平衡节点的最近的不平衡节点

2、RR型

10插入后,5是不平衡的节点,往右走两步。中间节点为8

3、LR型

转换为LL型

4、RL型

平衡二叉树太耗费资源,引入了红黑树。红黑树的基础是234树

234树:

变成四个节点的后,取中间节点向上走一层,连接两端

红黑树

二节点用黑色表示,三节点用黑红,四节点用黑红红表示,然后按照234树变成红黑树。

红黑树特点:

1、红黑树只有红色和黑色两种颜色

2、根节点一定是黑色的,

3、叶子节点是存在的,统一为黑色

4、如果一个节点的值是红色的那么他的子节点的值一定是黑色的

5、从根节点到任意一个叶子节点,路径上的黑色节点数目相同。(黑色节点数就是234数的高度)

为什么红黑树是最优二叉树?

最长链不超过最短链的二倍

时间复杂度比有序二叉树更稳定,平衡调整更简单

哈夫曼树和哈夫曼编码

自定义变长编码表容易引起歧义

相关推荐
地平线开发者11 小时前
LLM 训练基础概念与流程简介
算法·自动驾驶
是苏浙11 小时前
零基础入门C语言之C语言实现数据结构之顺序表
c语言·开发语言·数据结构
点云SLAM11 小时前
弱纹理图像特征匹配算法推荐汇总
人工智能·深度学习·算法·计算机视觉·机器人·slam·弱纹理图像特征匹配
星释11 小时前
Rust 练习册 :Matching Brackets与栈数据结构
数据结构·算法·rust
地平线开发者11 小时前
Camsys 时间戳信息简介
算法·自动驾驶
星释11 小时前
Rust 练习册 :Luhn与校验算法
java·算法·rust
代码雕刻家11 小时前
C语言中关于类型转换不匹配的解决方案
c语言·开发语言·算法
星星的月亮叫太阳12 小时前
large-scale-DRL-exploration 代码阅读 总结
python·算法
王哈哈^_^13 小时前
YOLOv11视觉检测实战:安全距离测算全解析
人工智能·数码相机·算法·yolo·计算机视觉·目标跟踪·视觉检测
..Cherry..13 小时前
Etcd详解(raft算法保证强一致性)
数据库·算法·etcd