关于树的专项练习

1. (单选题) 有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。表示该遗传关系最适合的数据结构为( ) 

A向量

B树

C图

D二叉树

2. (单选题) 树最合适用来表示( )。

A有序数据元素

B元素之间具有分支层次关系的数据

C无序数据元素

D元素之间无联系的数据

3. (单选题) 对二叉树的结点从1开始连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左、右孩子中,其左孩子编号小于其右孩子编号,则可采用( )次序的遍历实现二叉树的结点编号。

A先序

B中序

C后序

D从根开始按层次遍历

4. (单选题) 假定一棵三叉树的结点数为50,则它的最小高度为( )。

A3

B4

C5

D6 

设根结点层次为1
第一层:1个结点
第二层最多有:3个结点
第三层最多有:9个结点
第四层有:27个结点
第五层最多有:81个结点
1 + 3 + 9 + 27 = 40 < 50
1 + 3 + 9 + 27 + 81 = 121 > 50
所以至少有5层

5. (单选题) 在一棵具有K层的满三叉树中,结点总数为( ).

A(3^k-1)/2

B3^k-1

C(3^k-1)/3

D3^k

满二叉树节点数n =1+3+3^2+...+3^(k-1)=(3^k-1)/2

6. (单选题) 按照二叉树的定义,具有3个结点的二叉树有( )种。

A3

B4

C5

D6

 

7. (单选题) 对一个满二叉树,m个树叶,n个结点,深度为h,则( )。

An=h+m

Bh+m=2n

Cm=h-1

Dn=2^h-1

8. (单选题) 在一棵二叉树上第5层的结点数最多为( )(假设根结点的层数为0)

A8

B16

C15

D32

为满二叉树时,第五层节点数最多为2^5=32  (题目要求根节点层数为0)

9. (单选题) 深度为5的二叉树至多有( )个结点。

A16

B32

C31

D10

为满二叉树时,总节点数最多为1+2^1+2^2+2^3+2^4=2^5-1=31

10. (单选题) 一棵有124个叶结点的完全二叉树,最多有( )个结点。

A247

B248

C249

D250

E251

完全二叉树有如下性质:
n=n0+n1+n2     n0=n2+1
n:节点总数
n0:度为0的节点个数,也就是叶子节点
n1:度为1的节点个数,在完全二叉树中值有0和1这两种情况
n2:度为2的节点个数   
因为n0=124
所以n2=123
n1=0或1(要最多的节点数,n1取1)  
n=n0+n1+n2=124+1+123=248

11. (单选题) 含有129个叶结点的完全二叉树,最少有( )个结点。

A254

B255

C256

D257

E258

完全二叉树有如下性质:
n=n0+n1+n2     n0=n2+1
n:节点总数
n0:度为0的节点个数,也就是叶子节点
n1:度为1的节点个数,在完全二叉树中值有0和1这两种情况
n2:度为2的节点个数   
因为n0=129
所以n2=128
n1=0或1(要最少的节点数,n1取0)  
n=n0+n1+n2=129+0+128=257

12. (单选题) 假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。

A15

B16

C17

D47

n0=n2+1
证明:设二叉树上叶节点数为n0,单分支节点数为n1,双分支节点数为n2,则总节点数n=n0+n1+n2。在一棵二叉树中,所有节点的分支数(即度数)应等于单分支节点数加上双分支节点数的2倍,即总的分支数=n1+2n2。
由于二叉树中除根节点以外,每个节点都有唯一的一个分支指向它,因此二叉树中有:总的分支数=总节点数-1。
由上述三个等式可得:n1+2n2=n0+n1+n2-1
即:n0=n2+1

13. (单选题) 用顺序存储的方法将完全二叉树中所有结点逐层存放在数组R[1..n]中,结点R[i]若有左子树,则左子树是结点( )

AR[2i+1]

BR[2i]

CR[i/2]

DR[2i-1]

14. (单选题) 在一非空二叉树的中序遍历序列中,根结点的右边( )。

A只有右子树上的所有结点

B只有右子树上的部分结点

C只有左子树上的部分结点

D只有左子树上的所有结点

中序遍历的顺序是:左根右
在根节点的右边是右子树上所有的节点

15. (单选题) 任何一棵二叉树的叶结点在先序、中序和后序遍历中的相对次序( )。

A不发生改变

B发生改变

C不能确定

D以上都不对

叶子节点即没有左右子树的节点,没有左右子树的话,叶子节点不能做根,先序、中序、后序的遍历顺序是根位置的改变,因此叶结点在先序、中序和后序遍历中的相对次序不发生改变。

16. (单选题) 设 n,m为一棵树上的两个结点,在中序遍历时,n在m前的条件是( )。

An在m右方

Bn是m祖先

Cn在m左方

Dn是m子孙

17. (单选题) 已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是( )。

Aacbed

Bdecab

Cdeabc

Dcedba

18. (单选题) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点左右子树的位置,利用( )遍历方法最合适。

A前序

B中序

C后序

D层次

用二叉链表存储结构也就是左孩子右兄弟的存储结构。

后序遍历比较合理。正常的逻辑应该就是:做好当前结点子树内部的交换,然后交换当前结点的左右子树。刚好符合后序遍历的算法逻辑。
1、交换好左子树

2、交换好右子树

3、交换左子树与右子树

其他算法如先序和按层次其逻辑都差不多,即访问当前结点时交换其左右子树。从逻辑上来看稍显别扭一点点。因此说最合适应该是后序遍历,但是从实现上来说先序和按层次都是可以的。

1、交换左子树与右子树

2、遍历左子树

3、遍历右子树

按层次遍历

1、根结点入队列

2、出队列,交换其左右子树,将子树的根入队列

3、重复2直到队列为空

中序遍历相对较难实现一些。

19. (单选题) 欲实现任意二叉树的后序遍历的非递归算法而不必使用栈结构,最佳方案是二叉树采用( )存储结构。

A三叉链表

B广义表

C二叉链表

D顺序

20.具有n个结点的完全二叉树,其叶结点的个数为_n/2(向上取整)___。

设叶子节点n0,度为1的节点n1,度为2的节点n2;
n=n0+n1+n2;
n个节点则有树枝n-1;
n1有树枝n1条,n2有树枝2n2条,n0没有树枝,则
n-1=n0+2*n2;
n0 = n2 +1;
n0 = (n-n1+1)/2;
n1=0 或 1;

当n1=0时  n0= (n+1)/2;
当n1=1时  n0= n/2;

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值