一、树的定义
树(Tree) 是由 nn(n≥0n≥0)个节点组成的有限集合。
-
空树:当 n=0n=0 时,树为空。
-
非空树:包含唯一一个 根节点,其余节点分为 mm 个互不相交的子树(m≥0m≥0)。
示例:
A ← 根节点 / | \ B C D ← 子节点(子树根) / \ E F ← 叶子节点
节点A是根节点,B、C、D是子树根,E和F是叶子节点。
二、树的核心组成部分
-
根节点(Root)
-
树的唯一入口,没有前驱节点。
-
图中示例:节点A。
-
-
叶子节点(Leaf)
-
树的末端节点,没有后继节点。
-
图中示例:节点B、E、F、D。
-
-
内部节点(Internal Node)
-
非根非叶的节点,既有前驱也有后继。
-
图中示例:节点C。
-
三、树的属性
-
节点的度(Degree)
-
节点的子节点数量。
-
示例:节点C的度为2(子节点E、F)。
-
-
树的度
-
树中所有节点的度的最大值。
-
示例:若节点C的度最大为2,则树的度为2。
-
-
层数(Level)与深度(Depth)
-
层数:根节点为第1层,子节点逐层递增。
-
深度:树的最大层数(树的高度)。
-
示例:图中树的深度为3。
-
-
兄弟节点(Siblings)
-
同一父节点的子节点互为兄弟。
-
示例:节点B、C、D互为兄弟。
-
四、子树(Subtree)
-
定义:从任意节点出发,包含该节点及其所有后代节点的树。
-
性质:子树之间互不相交。
-
示例:
C ← 子树根 / \ E F ← 子树节点
以节点C为根的子树包含C、E、F。
五、树的性质总结
-
唯一根节点:每个非空树有且仅有一个根节点。
-
分层结构:节点按层级组织,根节点在第1层。
-
无环连通图:树中任意两节点有唯一路径,且无环路。
六、树的遍历方法
层序遍历(广度优先遍历)
-
规则:按层从上到下,每层从左到右访问节点。
-
示例:
A ← 第1层 / | \ B C D ← 第2层 / \ E F ← 第3层
遍历顺序:A → B → C → D → E → F
七、树的应用场景
-
文件系统:目录结构是树形(根目录→子目录→文件)。
-
组织结构图:公司层级(CEO→部门→员工)。
-
算法设计:二叉搜索树、堆、决策树等。
八、练习
题目:画出以下树的层序遍历结果
1 / | \ 2 3 4 | / \ 5 6 7
答案:1 → 2 → 3 → 4 → 5 → 6 → 7