数据结构期末复习20140625(6)

2018-12-29 20:25

2. 选择题

⑴ 如果结点A有3个兄弟,B是A的双亲,则结点B的度是( )。 A 1 B 2 C 3 D 4

【解答】D

⑵ 设二叉树有n个结点,则其深度为( )。 A n-1 B n C +1 D 不能确定 【解答】D

【分析】此题并没有指明是完全二叉树,则其深度最多是n,最少是 +1。

⑶ 二叉树的前序序列和后序序列正好相反,则该二叉树一定是( )的二叉树。 A 空或只有一个结点 B 高度等于其结点数 C 任一结点无左孩子 D 任一结点无右孩子

【解答】B

【分析】此题注意是序列正好相反,则左斜树和右斜树均满足条件。

⑷ 线索二叉树中某结点R没有左孩子的充要条件是( )。 A R.lchild=NULL B R.ltag=0 C R.ltag=1 D R.rchild=NULL

【解答】C

【分析】线索二叉树中某结点是否有左孩子,不能通过左指针域是否为空来判断,而要判断左标志是否为1。

⑸ 深度为k的完全二叉树至少有( )个结点,至多有( )个结点,具有n个结点的完全二叉树按层序从1开始编号,则编号最小的叶子的序号是( )。 A 2k-2+1 B 2k-1 C 2k -1 D 2k–1 -1 E 2k+1 F 2k+1 -1 G 2k -1+1 H 2k

【解答】B,C,A 【分析】深度为k的完全二叉树最少结点数的情况应是第k层上只有1个结点,最多的情况是满二叉树,编号最小的叶子应该是在结点数最少的情况下,叶子结点的编号。

⑹ 一个高度为h的满二叉树共有n个结点,其中有m个叶子结点,则有( )成立。 A n=h+m B h+m=2n C m=h-1 D n=2m-1 【解答】D

【分析】满二叉树中没有度为1的结点,所以有m个叶子结点,则度为2的结点个数为m-1。

⑺ 任何一棵二叉树的叶子结点在前序、中序、后序遍历序列中的相对次序( )。 A 肯定不发生改变 B 肯定发生改变 C 不能确定 D 有时发生变化 【解答】A

【分析】三种遍历次序均是先左子树后右子树。 ⑻ 如果T' 是由有序树T转换而来的二叉树,那么T中结点的前序序列就是T' 中结点的( )序列,T中结点的后序序列就是 T' 中结点的( )序列。 A 前序 B 中序 C 后序 D 层序 【解答】A,B

⑼ 设森林中有4棵树,树中结点的个数依次为n1、n2、n3、n4,则把森林转换成二叉树后,其根结点的右子树上有( )个结点,根结点的左子树上有( )个结点。 A n1-1 B n1 C n1+n2+n3 D n2+n3+n4 【解答】D,A

【分析】由森林转换的二叉树中,根结点即为第一棵树的根结点,根结点的左子树是由第一棵树中除了根结点以外其余结点组成的,根结点的右子树是由森林中除第一棵树外其他树转换来的。

(10)讨论树、森林和二叉树的关系,目的是为了( )。 A 借助二叉树上的运算方法去实现对树的一些运算

B 将树、森林按二叉树的存储方式进行存储并利用二叉树的算法解决树的有关问题 C 将树、森林转换成二叉树

D 体现一种技巧,没有什么实际意义 【解答】B

3. 判断题

⑴ 在线索二叉树中,任一结点均有指向其前趋和后继的线索。

【解答】错。某结点是否有前驱或后继的线索,取决于该结点的标志域是否为1。 ⑵ 在二叉树的前序遍历序列中,任意一个结点均处在其子女的前面。

【解答】对。由前序遍历的操作定义可知。

⑶ 二叉树是度为2的树。

【解答】错。二叉树和树是两种不同的树结构,例如,左斜树是一棵二叉树,但它的度为1。 ⑷ 由树转换成二叉树,其根结点的右子树总是空的。 【解答】对。因为根结点无兄弟结点。

⑸ 用一维数组存储二叉树时,总是以前序遍历存储结点。

【解答】错。二叉树的顺序存储结构是按层序存储的,一般适合存储完全二叉树。 4.证明:对任一满二叉树,其分枝数B=2(n0-1) 。(其中,n0为终端结点数) 【解答】因为在满二叉树中没有度为1的结点,所以有: n=n0+n2

设B为树中分枝数,则 n=B+1 所以

B=n0 +n2-1 再由二叉树性质: n0=n2+1

代入上式有:

B=n0+n0-1-1=2(n0-1)

5.证明:已知一棵二叉树的前序序列和中序序列,则可唯一确定该二叉树。

【解答】证明采用归纳法。

设二叉树的前序遍历序列为a1a2a3? an,中序遍历序列为b1b2b3? bn。 当n=1时,前序遍历序列为a1,中序遍历序列为b1,二叉树只有一个根结点,所以,a1= b1,

可以唯一确定该二叉树;

假设当n<=k时,前序遍历序列a1a2a3? ak和中序遍历序列b1b2b3? bk可唯一确定该二叉树,下面证明当n=k+1时,前序遍历序列a1a2a3? akak+1和中序遍历序列b1b2b3? bk bk+1可唯一确定一棵二叉树。

在前序遍历序列中第一个访问的一定是根结点,即二叉树的根结点是a1,在中序遍历序列中查找值为a1的结点,假设为bi,则a1=bi且b1b2? bi-1是对根结点a1的左子树进行中序遍历的结果,前序遍历序列a2a3? ai是对根结点a1的左子树进行前序遍历的结果,由归纳假设,前序遍历序列a2a3? ai和中序遍历序列b1b2? bi-1唯一确定了根结点的左子树,同样可证前序遍历序列ai+1ai+2? ak+1和中序遍历序列bi+1bi+2? bk+1唯一确定了根结点的右子树。

6.已知一棵度为m的树中有:n1个度为1的结点,n2个度为2的结点,??,nm个度为m的结点,问该树中共有多少个叶子结点? 【解答】设该树的总结点数为n,则 n=n0+n1+n2+……+nm 又:

n=分枝数+1=0×n0+1×n1+2×n2+??+m×nm+1 由上述两式可得:

n0= n2+2n3+……+(m-1)nm+1

7.已知二叉树的中序和后序序列分别为CBEDAFIGH和CEDBIFHGA,试构造该二叉树。 【解答】二叉树的构造过程如图5-12 所示。

8.对给定的一组权值W=(5,2,9,11,8,3,7),试构造相应的哈夫曼树,并计算它的带权路径长度。

【解答】构造的哈夫曼树如图5-13所示。

树的带权路径长度为:

WPL=2×4+3×4+5×3+7×3+8×3+9×2+11×2 =120

9.已知某字符串S中共有8种字符,各种字符分别出现2次、1次、4次、5次、7次、3次、4次和9次,

对该字符串用[0,1]进行前缀编码,问该字符串的编码至少有多少位。

【解答】以各字符出现的次数作为叶子结点的权值构造的哈夫曼编码树如图5-14所示。其带权路径长度=2×5+1×5+3×4+5×3+9×2+4×3+4×3+7×2=98,

10.算法设计

⑴ 设计算法求二叉树的结点个数。 【解答】本算法不是要打印每个结点的值,而是求出结点的个数。所以可将遍历算法中的“访问”操作改为“计 数操作”,将结点的数目累加到一个全局变量中,每个结点累加一次即完成了结点个数的求解。

具体算法如下:

⑵ 设计算法按前序次序打印二叉树中的叶子结点。

【解答】本算法的要求与前序遍历算法既有相同之处,又有不同之处。相同之处是打印次序均为前序,不同之处是此处不是打印每个结点的值,而是打印出其中的叶子结点,即为有条件打印。为此,将前序遍历算法中的访问操作改为条件打印即可。算法如下:

⑶ 设计算法求二叉树的深度。

【解答】当二叉树为空时,深度为0;若二叉树不为空,深度应是其左右子树深度的最大值加1,而其左右子树深度的求解又可通过递归调用本算法来完成。具体算法如下:

⑷ 编写算法,要求输出二叉树后序遍历序列的逆序。

【解答】要想得到后序的逆序,只要按照后序遍历相反的顺序即可,即先访问根结点,再遍历根结点的右子树,最后遍历根结点的左子树。注意和前序遍历的区别,具体算法如下:

⑸ 以二叉链表为存储结构,编写算法求二叉树中结点x的双亲。

【解答】对二叉链表进行遍历,在遍历的过程中查找结点x并记载其双亲。

⑹ 以二叉链表为存储结构,在二叉树中删除以值x为根结点的子树。

【解答】对二叉链表进行遍历,在遍历的过程中查找结点x并记载其双亲,然后将结点x的双亲结点中指向结点x的指针置空。

⑺ 一棵具有n个结点的二叉树采用顺序存储结构,编写算法对该二叉树进行前序遍历。 【解答】按照题目要求,设置一个工作栈以完成对该树的非递归算法,思路如下:

① 每访问一个结点,将此结点压栈,查看此结点是否有左子树,若有,访问左子树,重复执行该过程直到左子树为空。

② 从栈弹出一个结点,如果此结点有右子树,访问右子树执行步骤①,否则重复执行步骤②。

⑻ 编写算法交换二叉树中所有结点的左右子树。

【解答】对二叉树进行后序遍历,在遍历过程中访问某结点时交换该结点的左右子树。 具体算法如下:

⑼ 以孩子兄弟表示法做存储结构,求树中结点x的第i个孩子。

【解答】先在链表中进行遍历,在遍历过程中查找值等于x的结点,然后由此结点的最左孩子域firstchild找到值为x结点的第一个孩子,再沿右兄弟域rightsib找到值为x结点的第i个孩子并返回指向这个孩子的指针。

树的孩子兄弟表示法中的结点结构定义如下: template struct TNode {

T data;

TNode *firstchild, *rightsib; };

具体算法如下:

三、学习自测题

1.前序遍历和中序遍历结果相同的二叉树是( )。 A 根结点无左孩子的二叉树 B 根结点无右孩子的二叉树 C 所有结点只有左子树的二叉树 D 所有结点只有右子树的二叉树

【解答】D

2.由权值为{3, 8, 6, 2, 5}的叶子结点生成一棵哈夫曼树,其带权路径长度为( )。 A 24 B 48 C 53 D 72 【解答】C

3.用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组A[1] ~ A[n]中,结点A[i]若有左子树,则左子树的根结点是( )。 A A[2i-1] B A[2i+1] C A[i/2] D A[2i]

【解答】D

4.对任何一棵二叉树T,如果其终端结点的个数为n0,度为2的结点个数为n2,则( )。 A n0=n2-1 B n0=n2 C n0=n2+1 D 没有规律 【解答】C

5.一棵满二叉树中共有n个结点,其中有m个叶子结点,深度为h,则( )。 A n=h+m B h+m=2n C m=h-1 D n=2h-1

【解答】D

6.对于完全二叉树中的任一结点,若其右分支下的子孙的最大层次为h,则其左分支下的子孙的最大层次为( )。 A h B h+1 C h或h+1 D 任意 【解答】C

7.假定一棵度为3的树中结点数为50,则其最小高度应为 。 A 3 B 4 C 5 D 6

【解答】C

8.在线索二叉树中,一个结点是叶子结点的充要条件为( )。 A 左线索标志为0,右线索标志为1 B 左线索标志为1,右线索标志为0 C 左、右线索标志均为0 D 左、右线索标志均为1 【解答】D

9.对于一棵具有n个结点的树,其所有结点的度之和为( )。 【解答】n-1

10.在顺序存储的二叉树中,编号为i和j的两个结点处在同一层的条件是( )。 【解答】

11.现有按前序遍历二叉树的结果ABC,问有哪几种不同的二叉树可以得到这一结果? 【解答】共有5种二叉树可以得到这一结果,如图5-15所示。


数据结构期末复习20140625(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:XX年村居年终总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: