[数据结构]关于树的练习题(2)

前十道题目:[数据结构]关于树的练习题(1)

11.已知某二叉树的前序遍历序列为5 7 4 9 6 2 1,中序遍历序列为4 7 5 6 9 1 2,则其后序遍历序列为( )

A.4 2 5 7 6 9 1
B.4 2 7 5 6 9 1
C.4 7 6 1 2 9 5
D.4 7 2 9 5 6 1

答案:C
解析:
此题类似于上面的OJ题的解题思路,通过前序遍历找到子树的根,根据根元素在中序遍历的位置找到子树的左右区间。故:
根为: 5
5的左子树:4 7 5的右子树: 6 9 1 2
5的左子树的根为:7 5的右子树的根为:9
7的左子树: 4 7的右:空 9的左子树:6 9的右子树:2
故这棵树的结构为:
5
7 9
4 6 2
1
后序遍历: 4 7 6 1 2 9 5

12.已知某二叉树的中序遍历序列为JGDHKBAELIMCF,后序遍历序列为JGKHDBLMIEFCA,则其前序遍历序列为( )

A.ABDGHJKCEFILM
B.ABDGJHKCEILMF
C.ABDHKGJCEILMF
D.ABDGJHKCEIMLF

答案:B
解析:
和上题类似,根据后序遍历确定子树的根,后序遍历从后向前看,最后一个元素为根,和前序遍历刚好相反,从后向前看后序遍历,应该是根,右,左,根据中序遍历确定子树的左右区间。
故:
根为: A
A的左子树:JGDHKB A的右子树:ELIMCF
A的左子树的根:B A的右子树的根:C
B的左子树:JGDHK B的右子树:空 C的左子树:ELIM C的右子树:F
B的左子树的根:D C的左子树根:E
D的左子树的根:G D的右子树的根:H E的右子树的根:I
故树的结构为:
A
B C
D E F
G H I
J K L M
故前序遍历:
A B D G J H K C E I L M F

13.已知某二叉树的前序遍历序列为ABDEC,中序遍历序列为BDEAC,则该二叉树( )

A.是满二叉树
B.是完全二叉树,不是满二叉树
C.不是完全二叉树
D.是所有的结点都没有右子树的二叉树

答案:C
解析:
根据11题的思路可以确定树的结构:
A
B c
D
E
前: ABDEC 中:BDEAC
所以既不是满二叉树,也不是完全二叉树

14.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( )

A.所有的结点均无左孩子
B.所有的结点均无右孩子
C.只有一个叶子结点
D.至多只有一个结点

答案:C
解析:
如果前序遍历和后序遍历序列正好相反,说明它是一个单边树,比如下面这前序和中序序列所构成的树的结构:
12345
54321
第一种: 第二种:
              1     1
        2                2
    3                       3
  4                            4
5                                5
对于单边树,只有一个叶子节点。

15.设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有m(m>0)个叶子结点,那么该二叉树上的结点总数为( )

A.2m+1
B.2(m-1)
C.2m-1
D.2m

答案:C
解析:
根据题意可得,此树为完全二叉树,所以只有度为0和度为2的节点
设总节点个数为N, 度为i的节点个数为Ni
则完全二叉树: N = N0 + N2 (1)
再根据度和边的关系,由完全二叉树可得:
N - 1 = 2 * N2 即:N = 2 * N2 + 1 (2)
由(1)和(2)可得:N2 = N0 - 1
而题目告知 N0 = m, 故 N = m + m - 1

16.设根结点的深度为1,则一个拥有n个结点的二叉树的深度一定在( )区间内

A.[logn + 1,n]
B.[logn,n]
C.[logn + 1,n - 1]
D.[logn + 1,n + 1]

答案:A
解析:
最大深度: 此树为单边树,则深度为n
最小深度: 此树为完全二叉树, 如果是完全二叉树,假设高度为h,
则前h-1层为满二叉树,故n满足:
2^(h - 1) - 1 < n <= 2^h - 1
即:
2^(h - 1)< n + 1 <= 2^h
两边取对数得:
h - 1 < log(n + 1) <= h
故:
log(n + 1) <= h < log(n + 1) + 1
log(n + 1) <= h < log(2(n + 1)) //对数性质log(ab) = log(a) + log(b)
和题目选项比对: 只有A,B可选, 但是B选项得下界 log(n)是小于h得下界log(n + 1),只有A选项的区间符合。 A选项得下界: logn + 1 = log(2n)

17.对任意一颗二叉树,设N0、N1、N2分别是度为0、1、2的结点数,则下列式子中一定正确的是( )

A.N0 = N2 + 1
B.N1 = N0 + 1
C.N2 = N0 + 1
D.N2 = N1 + 1

答案:A
解析:
节点总数N: N = N0 + N1 + N2
度和边的关系: N - 1 = 0 * N0 + 1 * N1 + 2 * N2
上面两个式子可以推出: N0 + N1 + N2 - 1 = N1 + 2 * N2
可得: N0 = N2 + 1

18.二叉树的后序非递归遍历中,需要的额外空间包括( )

A.一个栈
B.一个队列
C.一个栈和一个记录标记的顺序表
D.一个队列和一个记录标记的顺序表

答案:C
解析:
需要一个栈模拟递归的过程, 一个顺序表保存节点。

19.二叉树的( )遍历相当于广度优先遍历,( )遍历相当于深度优先遍历

A.前序 中序
B.中序 前序
C.层序 后序
D.层序 前序

答案:D
解析:
广度优先需要把下一步所有可能的位置全部遍历完,才会进行更深层次的遍历,层序遍历就是一种广度优先遍历。
深度优先是先遍历完一条完整的路径(从根到叶子的完整路径),才会向上层折返,再去遍历下一个路径,前序遍历就是一种深度优先遍历。

20.如果一颗二叉树的前序遍历的结果是ABCD,则满足条件的不同的二叉树有( )种
A.13
B.14
C.15
D.16

答案:B
解析:
首先这棵二叉树的高度一定在3~4层之间:
三层:
A(B(C,D),()), A((),B(C,D)), A(B(C,()),D), A(B((),C),D),
A(B,C(D,())), A(B,C((),D))
四层:
如果为四层,就是单边树,每一层只有一个节点,除过根节点,其他节点都有两种选择,在上层节点的左边还是右边,所以222共8种
总共为14种。

猜你喜欢

转载自blog.csdn.net/weixin_43962381/article/details/112425804