第一部分:树的基本概念与术语
这部分是基础,笔试中经常以选择题、填空题或简答题的形式考察。
1. 什么是树?
- 定义:树 (Tree) 是由 n (n≥1n \ge 1n≥1) 个有限节点组成的集合T。它有一个特殊的节点,称为根 (Root)。其余节点可分为 m (m≥0m \ge 0m≥0) 个互不相交的有限集合 T1,T2,...,TmT_1, T_2, ..., T_mT1,T2,...,Tm,其中每一个集合本身又是一棵树,并被称为根的子树 (Subtree)。
- 核心特征:
- 树是一种非线性数据结构,能很好地描述具有层次或分支关系的对象(例如,家族的族谱、公司的组织架构、操作系统的文件系统)。
- 树中至少有一个节点(根节点)。
- 除了根节点外,每个节点有且仅有一个父节点。
- 一棵n个节点的树有 n-1 条边。
- 有序树与无序树:如果我们将树中每个节点的子树看作是有顺序的,不能随意交换位置,则称该树为有序树。反之,则为无序树。在计算机中,我们通常处理的都是有序树。
2. 树的相关术语
这些术语是后续学习的基础,必须牢记。
-
节点关系:
- 父节点 (Parent):一个节点的上级节点。
- 子节点 (Child):一个节点的下级节点。
- 兄弟节点 (Sibling):拥有同一个父节点的节点。
- 祖先 (Ancestor):从根到某节点路径上的所有节点都是该节点的祖先。
- 后裔 (Descendant):某节点的所有子树中的节点都是该节点的后裔。
-
节点属性:
- 节点的度 (Degree):一个节点拥有的子树个数(即其子节点的数量)。
- 叶节点 (Leaf) 或 终端节点:度为 0 的节点。
- 分支节点 或 非终端节点:度不为 0 的节点。
-
树的属性:
- 树的度:树中所有节点度的最大值。
- 节点的层次 (Level):从根开始定义,根为第 0 层,根的子节点为第 1 层,以此类推。
- 节点的深度 (Depth):从根到该节点的路径长度(经过的边数)。根节点的深度为 0。
- 节点的高度 (Height):从该节点到其最远叶节点的最长路径长度。叶节点的高度为 0。
- 树的高度/深度:通常指树中所有节点高度/深度的最大值,即根节点的高度或最深叶节点的深度。
3. 森林 (Forest)
- 定义:森林是 m (m≥0m \ge 0m≥0) 棵互不相交的树的集合。
- 与树的关系:去掉一棵树的根,就得到了一个森林;反之,给一个森林添加一个统一的根节点,就形成了一棵树。
第二部分:二叉树 (Binary Tree)
二叉树是本章的重中之重,是机试考试的绝对主角。
1. 什么是二叉树?
-
定义:二叉树是一个有限的节点集合,这个集合或者为空集,或者由一个根节点及两棵互不相交的、分别称为根节点的左子树 (Left Subtree) 和右子树 (Right Subtree) 的二叉树组成。
-
树与二叉树的核心区别:
- 度的限制:二叉树的每个节点最多有 2 个子节点,而普通树没有此限制。
- 有序性:二叉树是有序的,其子树严格区分为“左子树”和“右子树”,次序不能颠倒。即使某个节点只有一棵子树,也必须指明是左子树还是右子树。
- 空集:二叉树可以是空的,而根据定义,树至少有一个根节点。
2. 二叉树的重要性质 (笔试高频考点)
这些引理是进行复杂度分析和解题的利器。
- 引理 4.1: 在二叉树的第 iii 层上(i≥0i \ge 0i≥0),至多有 2i2^i2i 个节点。
- 引理 4.2: 高度为 kkk 的二叉树(k≥0k \ge 0k≥0),至多有

最低0.47元/天 解锁文章
1622

被折叠的 条评论
为什么被折叠?



