王道数据结构第五章属于二叉树课后习题错题总结

2024考研版

5.1 树的基本概念(p122,5.1.4)

  1. 对于一棵具有n个结点,度为4的树来说,( )。

A. 树的高度至多为n-3

B. 树的高度至多是n-4

C. 第i层上至多有4(i-1)个结点

D. 至少在某一层上正好有4个结点

正确答案:(A)

解:A选项:树的度为4说明至少有一个结点的度为4要想树的高度最高,需使树的每一层的结点尽可能少(如果第二层放满了剩余所有节点,加上根节点所在的第一层,这棵树的高度岂不是只有2。所以要每层尽可能少高度才能高)。每一层除了最后一层只有一个结点,最后一层放四个结点(至少一个结点度为4)的情况高度最高。将每一层只放一个结点的树高度为n,而此时将最后三个结点放到了倒数第四个结点那一层,所以高度减少了3,故树的高度至多为n-3。

C选项:树的基本性质:度为m的树中第i层上至多有m的(i-1)次方个结点。故该题第i层上至多有4的(i-1)次个结点。

D选项:什么玩意,什么都得不出这结论。想用度为4误导你。树的度为4只能得出树中至少有一个结点的度为4。

  1. 在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶结点个数为( )。

A. 41

B. 82

C. 113

D. 122

正确答案:(B)

解:当时刚学这里不会做,把这章学完重新回来复盘一下就有方法了。这里用到了两个知识点:1. 总结点数等于不管度为多少的结点的个数之和;2. 分支数等于各结点度之和。(这里分支数为总结点数-1,为什么要减一?因为每两个结点之间都会相连,唯独根结点和叶子结点没有相连,所以少了这一条)

题目条件树的度为4的作用就是限制一个结点最多就连4个结点了,而度为4的结点数也给出了,因此只考虑叶子结点也就是度为0的结点就好了。

设总结点数为N,度为0的结点数为n0。由以上两个知识点可以列出两个关系式:N=20+10+1+10+n0;N-1=20*4+10*3+1*2+10*1+n0*0

计算得出结果N=123,n0=82。

5.2 二叉树的概念(p127,5.2.3)

  1. 以下说法中,正确的是( )。

A. 在完全二叉树中,叶结点的双亲的左兄弟(若存在)一定不是叶结点

B. 任何一棵二叉树中,叶结点数为度为2的结点数减1,即n0=n2-1

C. 完全二叉树不适合顺序存储结构,只有满二叉树适合顺序存储结构

D. 结点按完全二叉树层序编号的二叉树中,第i个结点的左孩子的编号为 2i

正确答案:(A)

解:A选项:完全二叉树是从左往右按顺序存储的结构,所有有右一定有左。所有叶结点的双亲存在的话,则一定存在该双亲的左兄弟,该双亲都有孩子,那该双亲的左兄弟一定也有孩子。

B选项:非空二叉树的性质:度为2的结点+1等于叶结点个数,即n0=n2+1(适用于所有二叉树),B错

C选项:完全二叉树咋不适合?完全二叉树就是满二叉树不满的情况,存储方式是一样的。

D选项:一般情况下是这样的,但是左孩子也可能不存在哦。

  1. 设二叉树有2n个结点,且m<n,则不可能存在( )的结点。

A. n个度为0

B. 2m个度为0

C. 2m个度为1

D. 2m个度为2

正确答案:(C)

解:重新做的时候仍然没头绪,不知道考察的知识点是什么。看了答案后知后觉,题目里只提供了各种结点个数,所以就是考察各种结点个数的关系。如下。

2n=n0+n1+n2(1),n0=n2+1(2);(2)代入(1)得2n=2n2+n1+1,橙色部分为偶,则n1+1也为偶,则n1为奇。故不可能存在2m(很明显是个偶数)个度为1的结点。

m<n用在哪里了?

  1. 设二叉树只有度为0和2的结点,其结点个数为15,则该二叉树的最大深度为( )。

A. 4

B. 5

C. 8

D. 9

正确答案:(C)

解:深度最深即要使每层的结点尽可能少。因为没有度为1的结点,所以不能每层只放一个结点。所以除第一层外,每一层应只有一个结点有两个孩子。所以是这样的结构:

则有关系式2h-1=15(减一是因为第一层不是两个,如果每层都是两个,则2h为总结点数,现在第一层少一个,则减一),得h=8

  1. 已知一棵完全二叉树的第6层(设根为第一层)有8个叶结点,则完全二叉树的结点个数最少为( )。

A. 39

B. 52

C. 111

D. 119

正确答案:(A)

解:第六层还有结点说明前5层放满了,即前五层共31个结点。结点最少则为第六层只有8个叶结点了,即为31+8=39个。

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

A. 31

B. 16

C. 15

D. 10

正确答案:(A)

解:高度为5的二叉树全部放满需要2的5次-1(31)个存储单元(高度为h的二叉树至多有2的h次-1个结点)。但是就算不是放满,结点存在的位置也是随机的,故每个位置都有可能被存放,所以所有的存储单元都应该准备好。

5.3 二叉树的遍历和线索二叉树(p140,5.3.3)

  1. 在下列关于二叉树遍历的说法中,正确的是( )。

A. 若有一个结点是二叉树中某个子树的中序遍历结果序列的最后一个结点。则它一定是该子树的前序遍历结果序列的最后一个结点

B. 若有一个结点是二叉树中某个子树的前序遍历结果序列的最后一个结点。则它一定是该子树的中序遍历结果序列的最后一个结点

C. 若有一个结点是二叉树中某个子树的中序遍历结果序列的最后一个结点。则它一定是该子树的前序遍历结果序列的最后一个结点

D. 若有一个结点是二叉树中某个子树的前序遍历结果序列的最后一个结点。则它一定是该子树的中序遍历结果序列的最后一个结点

正确答案:(C)

解:注意审题,太狡猾了字眼那么紧,AB是结点,CD是叶结点。

如果该结点不是叶结点:(A)在中序遍历中为最后一个结点的话,该结点就还有左子树。那么前序遍历的话,最后一个结点就在它的左子树中。A错误。(B)在前序遍历是最后一个结点的话,我靠我想了半天觉得它只有是叶结点才能是最后一个了吧。所以不满足只要是结点就满足B,故B错误(我的分析,如有错误请指正谢谢)。

如果该结点是叶结点:(C)该叶结点是中序遍历的最后一个结点的话,它不可能是双亲结点,则它一定是右孩子。在前序遍历中也是,故C正确。(D)若该叶结点为前序遍历的最后一个结点,则可能是左孩子(只有左孩子的情况),该情况下在中序遍历中不是最后一个结点;也可能是右孩子,该情况下是最后一个结点。故D错误。

  1. 设n,m为一棵二叉树上的两个结点,在后序遍历时,n在m前的条件是( )。

A. n在m后方

B. n是m的祖先

C. n在m左方

D. n是m的子孙

正确答案:(D)

解:后序遍历顺序为左右根,只要m在根的位置,n绝对可以满足在m前的条件。则n是m的子孙。在这种条件下,n就不一定在m的左方,故C错误。

  1. 在二叉树中有两个结点m和n,若m是n的祖先,则使用( )可以找到从m到n的路径。

A. 先序遍历

B. 中序遍历

C. 后序遍历

D. 层次遍历

正确答案:(C)

解:遍历的非递归方法是将结点压入栈弹出栈的过程,按照先遍历左子树再遍历右子树的原则依次压入栈,碰到符合遍历次序的就弹出栈。直接考虑m是根结点的情况。以后序遍历为例,

m是根结点第一个压入栈,然后1入栈,按照后序遍历1第一个出栈,2入栈,n入栈,n出栈,2出栈,最后是m出栈。后序遍历序列为:1,n,2,m。从n进栈到出栈m都全程在栈中,所以是可以找到m到n的路径的。而其余都不行。

  1. 前序为A,B,C,后序为C,B,A的二叉树共有( )棵。

A. 1

B. 2

C. 3

D. 4

正确答案:(D)

解:前序+后序无法得到一棵确定的树。好在这棵树只有三个结点可以暴力出结果。我也不知道有什么技巧呜呜。以下四种满足情况。

  1. 一棵二叉树的前序遍历序列为1234567,它的中序遍历序列可能为( )。

A. 3124567

B. 1234567

C. 4135627

D. 1463572

正确答案:(B)

解:显然1为根结点,根据条件得出结论很少的话就看选项。

A选项:1为根结点的话,在中序遍历中,1的左边就是左子树部分,右边是右子树部分。3为左子树,可是题目中3的前面还有2,说明左子树还包含2,矛盾,A排除。

B选项:1为第一个,则该二叉树无左子树。如果该二叉树是一棵排成一斜列的树就满足条件。B正确。

C选项:与A的分析同理。

D选项:该二叉树无左子树,从题目可知2为1的右孩子,则46357为2的左孩子,46又为3的左子树,57为3的右子树,则遍历序列中4和6,5和7应该挨着。D排除。

  1. 已知一棵二叉树的后序序列为DABEC,中序序列为DEBAC,则先序序列为( )。

A. ACBED

B. DECAB

C. DEABC

D. CEDBA

正确答案:(D)

解:最开始做的时候不太熟练。但这个题没有为难学生,得出根结点直接就得出正确答案了。

从后序序列得出根结点为C,从中序序列中得出DEBA为该树的左子树。E为C的左孩子,则D是E的左孩子,BA是E的右子树。后序是AB,中序是BA,则A是B的右孩子。则得出该树形状:

  1. 线索二叉树是一种( )结构。

A. 逻辑

B. 逻辑和存储

C. 物理

D. 线性

正确答案:(C)

解:线性属于逻辑结构,线索二叉树是一种链表,而链表是存储结构,存储结构是一种物理结构。

  1. ( )的遍历仍需要栈的支持。

A. 前序线索树

B. 中序线索树

C. 后序线索树

D. 所有线索树

正确答案:(C)

解:需要栈说明只靠指针可能没办法遍历所有的结点。后序遍历的最后一个结点是根结点,如果遍历的倒数第二个结点有右孩子,那它的右指针域就不为空,没有指向遍历后继的指针,所以单靠指针没办法找到根结点,需要栈。

  1. 若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b,c,d,e,a,则根结点的孩子结点( )。

A. 只有e

B. 有e、b

C. 有e、c

D. 无法确定

正确答案:(A)

解:第一次做想到前序加后序无法得到一棵确定的树,就直接自暴自弃了选了D。果不其然每次不想动脑子胡乱做的时候就是错的。

显然a是根结点,cd在前序和后序里都挨着,说明cd在一棵树里,哎呀妈呀分析不出来了。答案里有一个结论,前序加后序无法得到一棵确定的树,但可以确定结点的祖先关系。当两个结点前序序列为XY,后序序列为YX时,X为Y的祖先。ae满足条件,则a是e的祖先,将bdc看成一个整体,如题,则e是bdc的祖先,所以a的孩子只有e。

  1. 先序序列为a,b,c,d的不同二叉树的个数是( )。

A. 13

B. 14

C. 15

D. 16

正确答案:(B)

解:根据二叉树前序遍历和中序遍历的递归算法中递归工作栈的状态变化得出前序序列和中序序列的关系相当于以 前序序列为入栈次序,以中序序列为出栈次序。因为前序序列和中序序列可以唯一的确定一棵二叉树,所以题意相当于以序列a,b,c,d为入栈次序,则出栈序列的个数为?而关于这个有个结论:对于n个不同元素进栈,出栈序列个数为:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值