算法与数据结构 第五章 树与二叉树(详解)

目录

一、判断题

二、选择题 


在开始之前,先为大家推荐两篇介绍该章两个主要算法的的文章,供大家参考。

Huffman树:Huffman树

树,二叉树,森林的转化:树,二叉树,森林的转化

一、判断题

1、二叉树可以用二叉链表存储,树无法用二叉链表存储。F

解析:二叉树与树都可以用二叉链表作为存储结构,二者的关系是一棵树可以惟一对应一棵二叉树。

2、某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。F

解析:某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子。(T)
后序:L,R,root 中序:L,root,R 要想两个序列一样,一定无R。

3、在一棵二叉搜索树上查找63,序列39、101、25、80、70、59、63是一种可能的查找时的结点值比较序列。F

解析:

算法与数据结构 第五章 树与二叉树(详解)_第1张图片

二叉搜索树或为空,或有以下性质:对任一结点,设其值为K,该结点的左子树的任意值都小于K,右的都大于K。

4、哈夫曼编码是一种最优的前缀码。对一个给定的字符集及其字符频率,其哈夫曼编码不一定是唯一的,但是每个字符的哈夫曼码的长度一定是唯一的。F

解析:哈夫曼字符的频率相同时每个字符的码长不是确定的。且哈夫曼树的构造并不是唯一的。

5、在一棵由包含4、5、6等等一系列整数结点构成的二叉搜索树中,如果结点4和6在树的同一层,那么可以断定结点5一定是结点4和6的父亲结点。F

解析:

算法与数据结构 第五章 树与二叉树(详解)_第2张图片

 6、对N(≥2)个权值均不相同的字符构造哈夫曼树,则树中任一非叶结点的权值一定不小于下一层任一结点的权值。T

解析:考察哈弗曼树的构造方法,哈弗曼树的构造思想就是贪心的思想,每次选择权值最小的两个节点来形成新的节点,自底向上建树,因此对于一棵哈弗曼树来说,树中任一非叶节点的权值一定不小于下一层的任意节点的权值。

7、一棵有124个结点的完全二叉树,其叶结点个数是确定的。T

解析:完全二叉树要按照从左到右,从上到下的规则插入元素,因此他的结构是唯一的,所以叶结点的个数是确定的。

8、完全二叉树中,若一个结点没有左孩子,则它必是树叶。T

解析:

算法与数据结构 第五章 树与二叉树(详解)_第3张图片

即最多只有最下面两层的结点度数可以小于2,最下一层的结点都集中在最左侧。

9、二叉树就是度为二的有序树。F

解析:二叉树由一个根节点及两棵互不相交的左右子树组成,可以是空,独根,空左,空右,左右都不空。

10、给定一棵树,可以找到唯一的一棵二叉树与之对应。T

解析:给定一棵树,可以找到唯一的一颗二叉树与之对应。所有树都能转为唯一对应的二叉树。二叉树是递归结构。注意:二叉树不是树的特殊情况,它们是两种不同的数据结构。,同样,森林也与一棵树存在一一对应关系。

11、哈夫曼树的结点个数不能是偶数。T

解析:除叶子节点外,其他节点都有左右子节点,再加上根节点,所以是奇数。

12、若一个结点是某二叉树的中序遍历序列的最后一个结点,则它必是该树的前序遍历序列中的最后一个结点。F

解析:前序遍历是DLR,中序遍历是LDR,如果R不存在,那么这句话就是错的。

二、选择题 

1、用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为( )

A.n-1

B.2n

C.n

D.n+l

解析:二叉树的节点都有2个指针。每个节点有0个、1个或2个空指针。对应的有2个、1个、0个非空指针。非空指针的总数就是二叉树的边的个数。
设一个二叉树x个节点含有0个空指针,y个节点有1个空指针,z个节点有2个空指针
有如下等式
 x+y+z=N 节点总数为N,

 y+2*z=N+1空指针个数为N+1

2*x+y= N-1 二叉树的边数。树的边数=树的节点数-1

2、对于任意一棵高度为 5 且有 10 个结点的二叉树,若采用顺序存储结构保存,每个结点占 1 个存储单元(仅存放结点的数据信息),则存放该二叉树需要的存储单元的数量至少是:

A.15

B.10

C.16

D.31

解析:解析:因为是顺序存储结构保存,所以需要的存储单元是给定高度的全部结点都要考虑。
高度为5的满二叉树共有:2^5-1=31个结点,31*1个存储单元=31。

3、具有65个结点的完全二叉树其深度为(根的深度为1):

A.5

B.6

C.8

D.7

解析:应该是7 因为2^6-1< 65 < 2^7-1,在根的深度是0的情况下,二叉树的高度为7,深度为6.在根的深度是1的情况下,深度加1,为7。

4、已知森林 F 及与之对应的二叉树 T,若 F 的先根遍历序列是 a, b, c, d, e, f,后根遍历序列是 b, a, d, f, e, c,则 T 的后序遍历序列是:

A.f, e, d, c, b, a

B.b, f, e, d, c, a

C.b, a, d, f, e, c

D.b, d, f, e, c, a

解析: 一棵树的后根遍历与这棵树所对应的二叉树的中序遍历相同。由先根遍历序列a,b,c,d,e,f和中序遍历序列b,a,d,f,e,c可知,a为T的根,{b}为a的左子树结点,{dfec}为a的右子树结点。由先根遍历序列c,d,e,f和中序遍历序列d,f,e,c可知a的右子树为c,c的左子树中的结点有{d,e,f},右子树为空。由先根遍历序列d,e,f和中序遍历序列d,f,e,可知c的左子树为d,d的左子树为空,右子树的结点有{e,f}。由先根遍历序列e,f和中序遍历序列f,e可知d的右子树为e,e的右子树为空,左子树的结点有{f}。所以,T的后遍历序列为:bfedca。

5、设一段文本中包含字符{a, b, c, d, e},其出现频率相应为{3, 2, 5, 1, 1}。则经过哈夫曼编码后,文本所占字节数为

A.40

B.25

C.12

D.36

解析:所占字节数就是加权路径长。

算法与数据结构 第五章 树与二叉树(详解)_第4张图片

6、已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则该完全二叉树的结点个数最多是:

A.111

B.119

C.52

D.39

解析:

完全二叉树的结点个数最多

第1层:1

第2层:2

第3层:4

第4层:8

第5层:16

第6层:32

第7层:48

相加为111个

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

1.6层只有8个节点,都是叶节点

2.6层节点满了,但有8个节点没有子节点,只能作为叶节点。

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

这时候 前6层节点数为32+16+...+1 =63

第7层节点数:(32-8)*2=48 ——第6层节点数共32个,减去8个叶节点数,每个再带有两个子节点,相加——111。

7、已知某二叉树的后序遍历序列是dabec, 中序遍历序列是debac , 它的前序遍历是( )。cedba

A.decab

B.deabc

C.acbed

D.cedba

解析:

算法与数据结构 第五章 树与二叉树(详解)_第5张图片

 8、一棵二叉树中有7个度为2的结点和5个度为1的结点,其总共有( )个结点。

A.20

B.30

C.18

D.16

解析:2*7+1*5+1=20。

9、设哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点。

A.100

B.101

C.102

D.99

解析:根据二叉树的性质:n2 = n0 - 1,列方程组得{n2 = n0 - 1, n0 + n2 = 199},解方程组得 n0 = 100,所以叶子结点有100个

上面的题目均是博主在期末考试前总结的重难点,欢迎各位大佬指正错误或者给出更优质的解析。 

你可能感兴趣的:(PTA算法与数据结构,算法,数据结构)