第六章树和二叉树--树和森林

一、判断题

1、

在这里插入图片描述

答案:F

解析:对于任何一棵树,结点总数=总分支数目+1,叶子没有分支数

如果某棵树中有N0个结点,K0条边,则N0 = k0 + 1
设森林中有m棵树,其结点数分别为n1,n2,n3,.,nm
相应地,各棵树的边数分别为k1,k2,k3,…km
显然:n1 = k1 + 1,n2 = k2 + 1,.,nm = km + 1 (1)
按照题设:
n1 + n2 + n3 +…+ nm = N (2)
k1 + k2 + k3 +…+ km = K (3)
将(1) 代入(2) 得:
(k1 + 1) + (k2 + 1) + (k3 + 1) + .+ (km + 1) = N
即:
k1 + k2 + k3 + …+ km + 1 + 1 +.+ 1 = N
按照(3):
K+ m= N
于是m = N - K
树的棵数=结点数-森林边数


2、

在这里插入图片描述


二、单选题

1、

在这里插入图片描述

答案:B

解析:

(1)普通二叉树具有的性质

  • 在二叉树的第 i 层上至多有2i-1个结点
  • 深度为 k 的二叉树上至多含2k-1个结点(k≥1)
  • 对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:n0 = n2+1

(2)完全二叉树才拥有的性质

  • 具有 n 个结点的完全二叉树的深度为 log2底n的整数值 +1
  • 若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点:

若 i=1,则该结点是二叉树的根,无双亲,否则,编号为 i/2取整数值部分的结点为其双亲结点;

若 2i>n,则结点i无左孩子, 否则,编号为 2i 的结点为结点i的左孩子结点;

若 2i+1>n,则结点i无右孩子结点,否则,编号为2i+1 的结点为结点i的右孩子结点。

(3)

  • 设二叉树中度为0的叶子结点个数为n0,度为1结点个数为n1,度为2结点个数为n2,于是n0 + n1 + n2 = 1102。
  • 根据二叉树性质:n0 = n 2 + 1,代入得到,2n2 + n1+1 = 1102
  • 由于完全二叉树的n1 只能是0或者1(为什么完全二叉树中度为1的结点只能是1或0?如果从满二叉树中在最后一层自左向右砍掉的节点数是偶数,那么该完全二叉树中度为1的节点数就是0。如果砍掉的节点数是奇数,那么该完全二叉树中就有且仅有一个节点的度为1. )
  • 为满足2n2 + n1 = 1101,n1 =1,因此n2 = 550。
  • 由n0 = n 2 + 1得n0 = 551,即叶子个数是551个。

2、

在这里插入图片描述

答案:C

解析:
森林包含树的棵数=结点数-森林边数
所以,树的棵数=25-15=10


3、???

在这里插入图片描述

答案:B

解析:
在这里插入图片描述

(1)因为是森林和二叉树之间的转换,所以说,u和v还有可能是没有关系

一共就有这五种情况,第一种显示的是兄弟关系,第四种是父子关系,所以1、2正确

(2)对于3

若是没关系:

  • u与v没有关系的话,他们之间,直接没有父节点

若是有关系:

  • 对于第一种情况,要么都是兄弟,要么是同一个父节点
  • 对于第二种情况,要么u的父节点是v的父节点的父节点,要么…

依次画出各种情况,然后一个个分析即可

注意:森林中的两个兄弟结点,互相之间,可能是没有关系的。对于二叉树和森林来说,左孩子,右兄弟。


4、

在这里插入图片描述

答案:A

解析:树的棵数=结点数-森林的边数


5、

在这里插入图片描述

答案:C

解析:根据森林转换为二叉树的法则,二叉树的根结点通常是第一棵树的结点,二叉树的左子树是由第一棵树删去根后所得所有子树构成的,二叉树的右子树是由其它树(第二,第三棵树)构成的,故左子树结点个数是M1-1,右子树上的结点个数是M2+M3。

森林转化为二叉树的步骤

转换步骤

步骤1:先将各树按照左孩子右兄弟的原则转化成二叉树

步骤2:然后将各二叉树通过根的右指针相连(即:按森林图形中树的先后次序,依次将后边一棵二叉树的根作为前边一棵二叉树根结点的右子树)


6、

在这里插入图片描述

答案:B

解析:

因为,对于普通二叉树拥有的一条性质是度数为0的结点数=度数为2的结点数+1,所以对于每一棵普通树来说,n0=n2+1。
n01=n21+1,n02=n22+1…
加和之后,N=M+X,所以X=N-M,所以B为正确答案。


7、

在这里插入图片描述

答案:C

解析:

如果第六层是满的话,那么第6层将会有25=32个节点,题目说只有8个叶节点,那只有两种情况:

  • 6层只有8个节点,都是叶节点
  • 6层节点满了,但有8个节点没有子节点,只能作为叶节点。

由于题目求更多,所以考虑第2钟情况,这时候:

  • 前6层节点数为26-1=63
  • 第7层节点数:(32-8)*2=48

因此,总结点数=63+48=111


8、

在这里插入图片描述

答案:B

解析:

因为是完全二叉树,所以编号为 i/2取整数值部分的结点为其双亲结点
17/2取整=8,19/2取整=9;
8/2取整=4,9/2取整=4;

所以是4;


9、

在这里插入图片描述

答案:B

解析:

对于完全二叉树来说,具有 n 个结点的完全二叉树的深度为 log2底n的整数值 +1

所以log2底65+1=6+1=7;


三、程序填空题

下列代码的功能是计算给定二叉树T的宽度。二叉树的宽度是指各层结点数的最大值。函数Queue_rear和Queue_front分别返回当前队列Q中队尾和队首元素的位置。

typedef struct TreeNode *BinTree;
struct TreeNode
{
   int Key;
   BinTree  Left;
   BinTree  Right;
};

在这里插入图片描述

注意:末尾不需要有分号,因为题目中已经给出了分号

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 一棵二叉树的顺序存储情况如下: 中,度为2的结点数为( )。 A.1 B.2 C.3 D.4 2. 一棵“完全二叉树”结点数为25,高度为( )。 A.4 B.5 C.6 D.不确定 3.下列说法中,( )是正确的。 A. 二叉树就是度为2的 B. 二叉树中不存在度大于2的结点 C. 二叉树是有序 D. 二叉树中每个结点的度均为2 4.一棵二叉树的前序遍历序列为ABCDEFG,它的中序遍历序列可能是( )。 A. CABDEFG B. BCDAEFG C. DACEFBG D. ADBCFEG 5.线索二叉树中的线索指的是( )。 A.左孩子 B.遍历 C.指针 D.标志 6. 建立线索二叉树的目的是( )。 A. 方便查找某结点的前驱或后继 B. 方便二叉树的插入与删除 C. 方便查找某结点的双亲 D. 使二叉树的遍历结果唯一 7. 有abc三个结点的右单枝二叉树的顺序存储结构应该用( )示意。 A. a b c B. a b ^ c C. a b ^ ^ c D. a ^ b ^ ^ ^ c 8. 一颗有2046个结点的完全二叉树的第10层上共有( )个结点。 A. 511 B. 512 C. 1023 D. 1024 9. 一棵完全二叉树一定是一棵( )。 A. 平衡二叉树 B. 二叉排序 C. 堆 D. 哈夫曼 10.某二叉树的中序遍历序列和后序遍历序列正好相反,则该二叉树一定是( )的二叉树。 A.空或只有一个结点 B.高度等于其结点数 C.任一结点无左孩子 D.任一结点无右孩子 11.一棵二叉树的顺序存储情况如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D E 0 F 0 0 G H 0 0 0 X 结点D的左孩子结点为( )。 A.E B.C C.F D.没有 12.一棵“完全二叉树”结点数为25,高度为( )。 A.4 B.5 C.6 D.不确定 二、填空题(每空3分,共18分)。 1. 的路径长度:是从根到每个结点的路径长度之和。对结点数相同的来说,路径长度最短的是 完全 二叉树。 2. 在有n个叶子结点的哈夫曼中,总结点数是 2n-1 。 3. 在有n个结点的二叉链表中,值为非空的链域的个数为 n-1 。 4. 某二叉树的中序遍历序列和后序遍历序列正好相反,则该二叉树一定是 任一结点无左孩子 的二叉树。 5. 深度为 k 的二叉树最多有 个结点,最少有 k 个结点。 三、综合题(共58分)。 1. 假定字符集{a,b,c,d,e,f }中的字符在电码中出现的次数如下: 字符 a b c d e f 频度 9 12 20 23 15 5 构造一棵哈夫曼(6分),给出每个字符的哈夫曼编码(4分),并计算哈夫曼的加权路径长度WPL(2分)。 (符合WPL最小的均为哈夫曼,答案不唯一) 哈夫曼编码: 2. 假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字符构成,它们在电文中出现的频率分别为{0.31,0.16,0.10,0.08,0.11,0.20,0.04}。要求: (1)为这7个字符设计哈夫曼(6分)。 (2)据此哈夫曼设计哈夫曼编码(4分)。 (3)假设电文的长度为100字符,使用哈夫曼编码比使用3位二进制数等长编码使电文总长压缩多少?(4分) (1) 为这7个字符设计哈夫曼为(符合WPL最小的均为哈夫曼,答案不唯一): (2) 哈夫曼编码为: a:01;b:001;c:100;d:0001;e:101;f:11;g:0000 (3) 假设电文的长度为100字符,使用哈夫曼编码比使用3位二进制数等长编码使电文总长压缩多少? 采用等长码,100个字符需要300位二进制数,采用哈夫曼编码发送这100个字符需要261二进制位,压缩了300-261=39个字符。压缩比为39/300=13%。 3. 二叉数T的(双亲到孩子的)边集为: { <A,B>, <A,C>, <D,A>, <D,E>, <E,F>, <F,G> } 请回答下列问题: (1)T的根结点(2分): (2)T的叶结点(2分): (3)T的深度(2分): (4)如果上述列出边集中,某个结点只有一个孩子时,均为其左孩子;某个结点有两个孩子时,则先列出了连接左孩子的边后列出了连接右孩子的边。画出该二叉树其及前序线索(6分)。 (1)T的根结点 (2)T的叶结点 : (3)T的深度 : (4)该二叉树其及前序线索为: 4.现有以下按前序和中序遍历二叉树的结果: 前序:ABCEDFGHI 中序:CEBGFHDAI 画出该二叉树的逻辑结构图(5分),并在图中加入中序线索(5分)。 5.有电文:ABCDBCDCBDDBACBCCFCDBBBEBB。 用Huffman构造电文中每一字符的最优通讯编码。画出构造的哈夫曼,并给出每个字符的哈夫曼编码方案。(符合WPL最小的均为哈夫曼,答案不唯一) (1)构造哈夫曼(6分): (2)哈夫曼编码方案(4分):
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值