diff --git a/408/数据结构/6 树和二叉树/6 树和二叉树.md b/408/数据结构/6 树和二叉树/6 树和二叉树.md index 9276f54..e708215 100644 --- a/408/数据结构/6 树和二叉树/6 树和二叉树.md +++ b/408/数据结构/6 树和二叉树/6 树和二叉树.md @@ -42,30 +42,152 @@ ### 6.1① 已知一棵树边的集合为 $\{ , , , , , , , , , , , , \}$,请画出这棵树,并回答下列问题: +```mermaid +graph TB +A --- B +A --- C +B --- D +B --- E +C --- F +C --- G +C --- H +E --- I +G --- J +G --- K +H --- L +I --- M +I --- N +``` + #### (1)哪个是根结点? +A。 + #### (2)哪些是叶子结点? +D、F、J、K、L、M、N。 + #### (3)哪个是结点 G 的双亲? +C。 + #### (4)哪些是结点 G 的祖先? +A、C。 + #### (5)哪些是结点 G 的孩子? +J、K。 + #### (6)哪些是结点 E 的子孙? +I、M、N。 + #### (7)哪些是结点 E 的兄弟?哪些是结点 F 的兄弟? +D;G、H。 + #### (8)结点 B 和 N 的层次号分别是什么? +2 和 5。 + #### (9)树的深度是多少? +5。 + #### (10)以结点 C 为根的子树的深度是多少? +3。 + ### 6.2① 一棵度为 2 的树与一棵二叉树有何区别? +- 度为 2 的树至少有 3 个节点,而二叉树可以为空。 +- 度为 2 的有序树的孩子的左右次序是相对于另一孩子而言的,若某节点只有一个孩子,则这个孩子就无需区分其左右次序,而二叉树无论其孩子数是否为 2,均需确定其左右次序,即二叉树的结点次序不是相对于另一结点而言,而是确定的。 + ### 6.3① 试分别画出具有 3 个结点的树和 3 个结点的二叉树的所有不同形态。 + + ### 6.4③ 一棵深度为 $H$ 的满 $k$ 叉树有如下性质:第 $H$ 层上的结点都是叶子结点,其余各层上每个结点都有 $k$ 棵非空子树。如果按层次顺序从 1 开始对全部结点编号,问: -#### (1)各层的结点数目是多少?(2)编号为p的结点的父结点(若存在)的编号是多少?(3)编号为p的结点的第i个儿子结点(若存在)的编号是多少?(4)编号为p的结点有右兄弟的条件是什么?其右兄弟的编号是多少?6.5②已知一棵度为k的树中有M个度为1的结点,M2个度为2的结点,…,n个度为k的结点,问该树中有多少个叶子结点? \ No newline at end of file +#### (1)各层的结点数目是多少? + +$3^{k - 1}$。 + +#### (2)编号为 $p$ 的结点的父结点(若存在)的编号是多少? + +$[p / k + 1 / 2]$。 + +#### (3)编号为 $p$ 的结点的第 $i$ 个儿子结点(若存在)的编号是多少? + +$p \times k - [k + 1 / 2] + i$。 + +#### (4)编号为 $p$ 的结点有右兄弟的条件是什么?其右兄弟的编号是多少? + +### 6.5② 已知一棵度为 $k$ 的树中有 $n_1$ 个度为 1 的结点,$n_2$ 个度为 2 的结点,……,$n_k$ 个度为 $k$ 的结点,问该树中有多少个叶子结点? + +### 6.6③ 已知在一棵含有 $n$ 个结点的树中,只有度为 $k$ 的分支结点和度为 0 的叶子结点。试求该树含有的叶子结点的数目。 + +### 6.7③ 一棵含有 $n$ 个结点的 $k$ 叉树,可能达到的最大深度和最小深度各为多少? + +可能达到的最大深度为 $n$,最小深度为 $1 + \log_{k}n$。 + +### 6.8① 证明:一棵满 $k$ 叉树上的叶子结点数 $n_0$ 和非叶子结点数 $n_1$ 之间满足以下关系: + +$$ +n_0 = (k - 1) n_1 + 1 +$$ + +### 6.9② 试分别推导含 $n$ 个结点和含 $n_0$ 个叶子结点的完全三叉树的深度 $H$。 + +含 $n$ 个结点的完全三叉树的深度 $H = \log_3{n} + 1$;含 $n_0$ 个叶子结点的完全三叉树的深度 $H = n_0$ + +### 6.10① 对于那些所有非叶子结点均有非空左右子树的二叉树: + +#### (1)试问:有 $n$ 个叶子结点的树中共有多少个结点? + +#### (2)试证明:$\sum\limits_{i = 1}^{n}2^{-(l_i - 1)}=1$,其中 $n$ 为叶子结点的个数,$l_i$ 表示第 $i$ 个叶子结点所在的层次(设根结点所在层次为 1)。 + +### 6.11③ 在二叉树的顺序存储结构中,实际上隐含着双亲的信息,因此可和三叉链表对应。假设每个指针域占 4 个字节的存储,每个信息域占 $k$ 个字节的存储。试问:对于一棵有 $n$ 个结点的二叉树,且在顺序存储结构中最后一个结点的下标为 $m$,在什么条件下顺序存储结构比三叉链表更节省空间? + +### 6.12② 对题 6.3 所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。 + +### 6.13② 假设 $n$ 和 $m$ 为二叉树中两结点,用「1」、「0」或「φ」(分别表示肯定、恰恰相反或者不一定)填写下表: + +| --- | 前序遍历时n在m前? | 中序遍历时n在m前? | 后序遍历时n在m前? | +| :-------------: | :---------------: | :---------------: | :---------------: | +| $n$ 在 $m$ 左方 | 1 | 1 | 1 | +| $n$ 在 $m$ 右方 | 0 | 0 | 0 | +| $n$ 是 $m$ 祖先 | 1 | φ | φ | +| $n$ 是 $m$ 子孙 | 1 | φ | φ | + +> 注:如果 ① 离 a 和 b 最近的共同祖先 p 存在,且 ② a 在 p 的左子树中,b 在 p 的右子树中,则称 a 在 b 的左方(即 b 在 a 的右方)。 + +### 6.14② 找出所有满足下列条件的二叉树: + +#### (a)它们在先序遍历和中序遍历时,得到的结点访问序列相同; + +```mermaid +graph TB +1(1) +``` + +#### (b)它们在后序遍历和中序遍历时,得到的结点访问序列相同; + +```mermaid +graph TB +1(1) --- 2(2) +2(2) -.- n(n) +``` + +#### (c)它们在先序遍历和后序遍历时,得到的结点访问序列相同; + +```mermaid +graph TB + +``` + +### 6.15② 请对右图所示二叉树进行后序线索化,为每个空指针建立相应的前驱或后继线索。 + + +