数据结构--二叉树
术语
- 节点的深度: 对于任意节点 n, n 的深度为从根到 n 的唯一路径长, 根的深度为 0;
- 节点的高度: 对于任意节点 n, n 的高度为从 n 到一片树叶的最长路径长, 所有树叶的高度为 0;
- 树的深度: 树中所有节点的最大深度, 称作树的深度;
- 树的高度: 树的高度等于它的根节点的高度;
- 结点的度(Degree): 结点拥有的子树数目称为结点的度;
树的种类
有序树: 树中任意节点的子节点之间有顺序关系, 这种树称为有序树;
- 二叉树: 每个节点最多含有两个子树的树称为二叉树;
- 完全二叉树: 对于一棵二叉树, 假设其深度为d(d>1). 除了第d层外, 其它各层的节点数目均已达最大值, 且第d层所有节点从左向右连续地紧密排列, 这样的二叉树被称为完全二叉树;
- 满二叉树: 所有叶节点都在最底层的完全二叉树;
- 平衡二叉树(AVL树): 当且仅当任何节点的两棵子树的高度差不大于1的二叉树;
- B树: 一种对读写操作进行优化的自平衡的二叉查找树, 能够保持数据有序, 拥有多于两个子树.
平衡二叉树
假设一颗 AVL 树的某个节点为 A, 有四种操作会使 A 的左右子树高度差大于 1, 从而破坏了原有 AVL 树的平衡性.
平衡二叉树插入节点的情况分为以下四种:
插入方式 | 描述 | 旋转方式 |
LL | 在 A 的左子树根节点的左子树上插入节点而破坏平衡 | 右旋转 |
RR | 在 A 的右子树根节点的右子树上插入节点而破坏平衡 | 左旋转 |
LR | 在 A 的左子树根节点的右子树上插入节点而破坏平衡 | 先左旋后右旋 |
RL | 在 A 的右子树根节点的左子树上插入节点而破坏平衡 | 先右旋后左旋 |
平衡二叉树的失衡调整主要是通过旋转最小失衡子树来实现的.
标签:
数据结构与算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架