树的基础概念

AI-摘要
MOZIAI GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
树的基础概念
Mozi树的基础概念
1. 理解树的基本术语
树是由节点(Node)组成的层次结构,每个节点通过边连接。以下是树的基本术语:
- 节点:树的基本单位,包含数据和指向其他节点的连接。
- 节点结构:通常包含以下信息:
- 父节点的地址(如果有)。
- 节点的值。
- 子节点的地址列表。
- 节点结构:通常包含以下信息:
- 子节点:某节点的直接下属节点,表示该节点的分支。
- 父节点:某节点的直接上级节点,连接到该节点的上一层。
- 兄弟节点:同一父节点的子节点。
- 叶子节点:没有子节点的节点,通常表示树的末端。
- 非叶子节点:至少有一个子节点的节点。
- 节点的度:节点拥有的子节点数量。例如,度为 0 的节点是叶子节点。
- 节点的高度:从该节点到叶子节点的最长路径的边数。
- 节点的深度:从根节点到该节点的路径的边数。
- 树的高度:从根节点到最深叶子节点的最长路径。
- 树的深度:树中所有节点的最大深度。
- 层次:节点的层级,从根节点开始为第 1 层,依次递增。
graph TD A[根节点 A<br>深度: 0<br>高度: 2] --> B[子节点 1 B<br>深度: 1<br>高度: 1] A --> C[子节点 2 C<br>深度: 1<br>高度: 1] B --> D[叶子节点 1 D<br>深度: 2<br>高度: 0] B --> E[叶子节点 2 E<br>深度: 2<br>高度: 0] C --> F[叶子节点 3 F<br>深度: 2<br>高度: 0] A:::root B:::parent C:::parent D:::leaf E:::leaf F:::leaf classDef root fill:#f9f,stroke:#333,stroke-width:2px; classDef parent fill:#bbf,stroke:#333,stroke-width:2px; classDef leaf fill:#bfb,stroke:#333,stroke-width:2px;
- 说明:
A
是根节点,深度为 0,高度为 2。B
和C
是子节点,深度为 1,高度为 1。D
、E
和F
是叶子节点,深度为 2,高度为 0。- 树的深度为 2(所有节点的最大深度)。
2. 掌握树的基本结构
树的结构具有递归特性,每个子树本身也是一棵树。
- 递归性质:树的定义具有递归特性,便于通过递归算法进行操作。
以下是树的递归性质的示意图:
graph TD A[树 A] --> B[子树 1 B] A --> C[子树 2 C] B --> D[子树 1 的子树 D] C --> E[子树 2 的子树 E] A:::root B:::subtree C:::subtree D:::leaf E:::leaf classDef root fill:#f9f,stroke:#333,stroke-width:2px; classDef subtree fill:#bbf,stroke:#333,stroke-width:2px; classDef leaf fill:#bfb,stroke:#333,stroke-width:2px;
研究特殊的树结构
1. 二叉树
- 定义:每个节点的度(子节点数量)最多为 2。
- 性质:
- 第
i
层最多有2^(i-1)
个节点。 - 深度为
k
的二叉树最多有2^k - 1
个节点。 - 所有叶子节点的深度差不超过 1。
- 第
graph TD A[根节点 A<br>深度: 0<br>高度: 2] --> B[左子节点 B<br>深度: 1<br>高度: 1] A --> C[右子节点 C<br>深度: 1<br>高度: 1] B --> D[叶子节点 D<br>深度: 2<br>高度: 0] B --> E[叶子节点 E<br>深度: 2<br>高度: 0] C --> F[叶子节点 F<br>深度: 2<br>高度: 0] C --> G[叶子节点 G<br>深度: 2<br>高度: 0] A:::root B:::parent C:::parent D:::leaf E:::leaf F:::leaf G:::leaf classDef root fill:#f9f,stroke:#333,stroke-width:2px; classDef parent fill:#bbf,stroke:#333,stroke-width:2px; classDef leaf fill:#bfb,stroke:#333,stroke-width:2px;
2. 二叉查找树
- 定义:二叉树的一种,满足以下性质:
- 左子节点的值小于父节点。
- 右子节点的值大于父节点。
- 性质:
- 中序遍历二叉查找树可以得到一个递增序列。
- 根节点的值介于左子树的最大值和右子树的最小值之间。
graph TD A[根节点 8<br>深度: 0<br>高度: 3] --> B[左子节点 3<br>深度: 1<br>高度: 2] A --> C[右子节点 10<br>深度: 1<br>高度: 1] B --> D[叶子节点 1<br>深度: 2<br>高度: 0] B --> E[子节点 6<br>深度: 2<br>高度: 1] C --> F[叶子节点 14<br>深度: 2<br>高度: 0] E --> G[叶子节点 4<br>深度: 3<br>高度: 0] E --> H[叶子节点 7<br>深度: 3<br>高度: 0] A:::root B:::parent C:::parent D:::leaf F:::leaf G:::leaf H:::leaf classDef root fill:#f9f,stroke:#333,stroke-width:2px; classDef parent fill:#bbf,stroke:#333,stroke-width:2px; classDef leaf fill:#bfb,stroke:#333,stroke-width:2px;
3. 平衡二叉树
- 定义:任意节点的左右子树高度差不超过 1。
- 优势:提高查找效率,避免退化为链表。
- 性质:
- 每个节点的高度由其子节点的高度决定。
- 树的高度接近
log(n)
,其中n
是节点总数。
graph TD A[根节点 4<br>深度: 0<br>高度: 2] --> B[左子节点 2<br>深度: 1<br>高度: 1] A --> C[右子节点 6<br>深度: 1<br>高度: 1] B --> D[叶子节点 1<br>深度: 2<br>高度: 0] B --> E[叶子节点 3<br>深度: 2<br>高度: 0] C --> F[叶子节点 5<br>深度: 2<br>高度: 0] C --> G[叶子节点 7<br>深度: 2<br>高度: 0] A:::root B:::parent C:::parent D:::leaf E:::leaf F:::leaf G:::leaf classDef root fill:#f9f,stroke:#333,stroke-width:2px; classDef parent fill:#bbf,stroke:#333,stroke-width:2px; classDef leaf fill:#bfb,stroke:#333,stroke-width:2px;
4. 旋转操作
- 定义:调整树的结构以保持平衡。
- 术语:
- 左旋:将右子节点提升为父节点,原父节点成为左子节点。
- 右旋:将左子节点提升为父节点,原父节点成为右子节点。
- 组合旋转:
- 左左(LL):连续两次右旋。
- 左右(LR):先左旋,再右旋。
- 右左(RL):先右旋,再左旋。
- 右右(RR):连续两次左旋。
5. 红黑树
- 定义:一种自平衡二叉查找树。
- 规则:
- 节点是红色或黑色。
- 根节点是黑色。
- 红色节点的子节点必须是黑色。
- 从任意节点到其每个叶子节点的路径中,黑色节点的数量相同。
- 性质:
- 树的高度接近
log(n)
。 - 通过颜色规则保持平衡。
- 树的高度接近
graph TD A[黑色节点 10<br>深度: 0<br>高度: 2] --> B[红色节点 5<br>深度: 1<br>高度: 1] A --> C[黑色节点 15<br>深度: 1<br>高度: 1] B --> D[黑色节点 3<br>深度: 2<br>高度: 0] B --> E[黑色节点 7<br>深度: 2<br>高度: 0] C --> F[红色节点 12<br>深度: 2<br>高度: 0] C --> G[红色节点 18<br>深度: 2<br>高度: 0] A:::black B:::red C:::black D:::black E:::black F:::red G:::red classDef black fill:#000,stroke:#333,stroke-width:2px,color:#fff; classDef red fill:#f00,stroke:#333,stroke-width:2px,color:#fff;
参考资料
- 《数据结构与算法分析》 - Mark Allen Weiss
- 《算法导论》 - Thomas H. Cormen 等
- 维基百科 - 树 (数据结构)
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果