数组广义表答案及二叉树习题及答案

数组广义表答案及二叉树习题及答案
数组广义表答案及二叉树习题及答案

栈、队列、串、数组和广义表习题

一、选择题

1 一个栈的输入序列为1

2

3

4 5,则下列序列中不可能是栈的输出序列的是( B )。

A. 2 3 4 1 5

B. 5 4 1 3 2

C. 2 3 1 4 5

D. 1 5 4 3 2

2若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( D )。

A. i

B. n-i

C. n-i+1

D. 不确定

3 若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( B )

A. 1和 5

B. 2和4

C. 4和2

D. 5和1

4 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是( C )。

A. 6 B. 4 C. 3 D. 2

5 设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C )

A.求子串 B.联接 C.匹配 D.求串长

6 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( B )。

A. 13

B. 33

C. 18

D. 40

7 已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( C )。

A. head(tail(LS))

B. tail(head(LS))

C. head(tail(head(tail(LS)))

D. head(tail(tail(head(LS))))

8 模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为( D ),nextval数组的值为( F )。

A.0 1 1 1 2 2 1 1 1 2 3 4 5 6 7 1 2 B.0 1 1 1 2 1 2 1 1 2 3 4 5 6 1 1 2 C.0 1 1 1 0 0 1 3 1 0 1 1 0 0 7 0 1 D.0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2 E.0 1 1 0 0 1 1 1 0 1 1 0 0 1 7 0 1 F.0 1 1 0 2 1 3 1 0 1 1 0 2 1 7 0 1

二、填空题

1 在作进栈运算时应先判别栈是否_(1)满_;在作退栈运算时应先判别栈是否_(2)空_;当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为_(3)n_。

2 设循环队列存放在向量sq.data[0:M]中,则队头指针sq.front在循环意义下的出队操作可表示为__return(sq.data(sq.front));sq.front=(sq.front+1)%(M+1);_____,若用牺牲一个单元的办法来区分队满和队空(设队尾指针sq.rear),则队满的条件为_(sq.rear+1)%(M+1)==sq.front;_。

3 串是一种特殊的线性表,其特殊性表现在__(1) 其数据元素都是字符__;串的两种最基本的存储方式是__(2) 顺序存储__、__(3) 和链式存储__;两个串相等的充分必要条件

是__(4) 串的长度相等且两串中对应位置的字符也相等__。

5 已知广义表A=(((a,b),(c),(d,e))),head(tail(tail(head(A))))的结果是_(d,e)_。

第5章树

一、单项选择题

1.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个。

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

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

A.3

4.在一棵二叉树上第4层的结点数最多为()。

5.用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中R[1..n],结点R[i]若有左孩子,其左孩子的编号为结点()。

A. R[2i+1]

B. R[2i]

C. R[i/2]

D. R[2i-1]

6.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()。

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

A. 逻辑

B. 逻辑和存储

C. 物理

D. 线性

8.线索二叉树中,结点p没有左子树的充要条件是()。

A. p->lc=NULL

B. p->ltag=1

C. p->ltag=1 且p->lc=NULL

D. 以上都不对

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

A. n在m右方

B. n在m 左方

C. n是m的祖先

D. n是m的子孙

10.如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的()。

A. 中序

B. 前序

C. 后序

D. 层次序

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

A. 三叉链表

B. 广义表

C. 二叉链表

D. 顺序

12.下面叙述正确的是()。

A. 二叉树是特殊的树

B. 二叉树等价于度为2的树

C. 完全二叉树必为满二叉树

D. 二叉树的左右子树有次序之分

13.任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序()。

A. 不发生改变

B. 发生改变

C. 不能确定

D. 以上都不对

14.已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为()。

A. 1

B. 2

C. 3

D. 4

15.根据先序序列ABDC和中序序列DBAC确定对应的二叉树,该二叉树()。

A. 是完全二叉树

B. 不是完全二叉树

C. 是满二叉树

D. 不是满二叉树

二、判断题

1.二叉树中每个结点的度不能超过2,所以二叉树是一种特殊的树。()

2.二叉树的前序遍历中,任意结点均处在其子女结点之前。()

3.线索二叉树是一种逻辑结构。()

4.哈夫曼树的总结点个数(多于1时)不能为偶数。()

5.由二叉树的先序序列和后序序列可以唯一确定一颗二叉树。()

6.树的后序遍历与其对应的二叉树的后序遍历序列相同。()

7.根据任意一种遍历序列即可唯一确定对应的二叉树。()

8.满二叉树也是完全二叉树。()

9.哈夫曼树一定是完全二叉树。()

10.树的子树是无序的。()

三、填空题

1. 假定一棵树的广义表表示为A(B(E),C(F(H,I,J),G),D),则该树的度为__3___,树的深度为__4__,终端结点的个数为____6,单分支结点的个数为___1___,双分支结点的个数为_1_____,三分支结点的个数为_2______,C结点的双亲结点为_a______,其孩子结点为___f___和__g_____结点。

2. 设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,则B中右指针域为空的结点有_______个。

3. 对于一个有n个结点的二叉树,当它为一棵________二叉树时具有最小高度,即为_______,当它为一棵单支树具有_______高度,即为_______。

4. 由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为___。

5. 在一棵二叉排序树上按_______遍历得到的结点序列是一个有序序列。

6. 对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为_______个,其中_______个用于链接孩子结点,_______个空闲着。

7. 在一棵二叉树中,度为0的结点个数为n0,度为2的结点个数为n2,则n0=______。

8. 一棵深度为k的满二叉树的结点总数为_______,一棵深度为k的完全二叉树的结点总数的最小值为_____,最大值为______。

9. 由三个结点构成的二叉树,共有____种不同的形态。

10. 设高度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含的结

点数至少为____。

11. 一棵含有n个结点的k叉树,______形态达到最大深度,____形态达到最小深度。

12. 对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n),则它的左孩子结点的编号为________,右孩子结点的编号为________,双亲结点的编号为________。

13. 对于一棵具有n个结点的二叉树,采用二叉链表存储时,链表中指针域的总数为_________个,其中___________个用于链接孩子结点,_____________个空闲着。

14. 哈夫曼树是指________________________________________________的二叉树。

15. 空树是指________________________,最小的树是指_______________________。

16. 二叉树的链式存储结构有______________和_______________两种。

17. 三叉链表比二叉链表多一个指向______________的指针域。

18. 线索是指___________________________________________。

19. 线索链表中的rtag域值为_____时,表示该结点无右孩子,此时______域为指向该结点后继线索的指针。

20. 本节中我们学习的树的存储结构有_____________、___________和___________。

四、应用题

1. 已知一棵树边的集合为{},请画出这棵树,并回答下列问题:

(1)哪个是根结点?

(2)哪些是叶子结点?

(3)哪个是结点g的双亲?

(4)哪些是结点g的祖先?

(5)哪些是结点g的孩子?

(6)哪些是结点e的孩子?

(7)哪些是结点e的兄弟?哪些是结点f的兄弟?

(8)结点b和n的层次号分别是什么?

(9)树的深度是多少?

(10)以结点c为根的子树深度是多少?

2. 一棵度为2的树与一棵二叉树有何区别。

3. 试分别画出具有3个结点的树和二叉树的所有不同形态?

4. 已知用一维数组存放的一棵完全二叉树:ABCDEFGHIJKL,写出该二叉树的先序、中序和后序遍历序列。

5. 一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树,如果按层次自上至下,从左到右顺序从1开始对全部结点编号,回答下列问题:

(1)各层的结点数目是多少?

(2)编号为n的结点的父结点如果存在,编号是多少?

(3)编号为n的结点的第i个孩子结点如果存在,编号是多少?

(4)编号为n 的结点有右兄弟的条件是什么?其右兄弟的编号是多少? 6. 找出所有满足下列条件的二叉树:

(1)它们在先序遍历和中序遍历时,得到的遍历序列相同; (2)它们在后序遍历和中序遍历时,得到的遍历序列相同; (3)它们在先序遍历和后序遍历时,得到的遍历序列相同; 7. 假设一棵二叉树的先序序列为EBADCFHGIKJ ,中序序列为ABCDEFGHIJK ,请写出该二叉树的后序遍历序列。

8. 假设一棵二叉树的后序序列为DCEGBFHKJIA ,中序序列为DCBGEAHFIJK ,请写出该二叉树的后序遍历序列。

9. 给出如图5-14所示的森林的先根、后根遍历结点序列,然后画出该森林对应的二叉树。

10.给定一组权值(5,9,11,2,7,16),试设计相应的哈夫曼树。

习题5参考答案 一、单项选择题 1. C 2. B 3. C 4. D 5. B 6. D 7. C 8. B 9. B 10. B 11. A 12. D 13. A 14. B 15. A 二、判断题

1.×

2.√

3.×

4.√

5.×

6.√

7.√

8.√

9.×10.× 三、填空题

1. 3,4,6,1,1,2,A ,F ,G

2. n+1

3. 完全,2log (1)n +????,最大,n

4. 55

5. 中序

6. 2n ,n-1,n+1

7. n 2+1

8. 2k -1,2k-1,2k -1 9. 5 10. 2h -1

11. 单支树,完全二叉树

12. 2i ,2i+1,i/2(或?i/2?) 13. 2n ,n-1,n+1

A B

D

E

F

C G

H

J

I K

N

O

M L 图5-14

14. 带权路径长度最小

15. 结点数为0,只有一个根结点的树 16. 二叉链表,三叉链表 17. 双亲结点

18. 指向结点前驱和后继信息的指针 19. 1,RChild

20. 孩子表示法,双亲表示法,长子兄弟表示法 四、应用题

1.

根据给定的边确定的树如图5-15所示。 其中根结点为a ;

叶子结点有:d 、m 、n 、j 、k 、f 、l ;

c 是结点g 的双亲;

a 、c 是结点g 的祖先; j 、k 是结点g 的孩子; m 、n 是结点e 的子孙;

e 是结点d 的兄弟;

g 、h 是结点f 的兄弟;

结点b 和n 的层次号分别是2和5; 树的深度为5。 2.

度为2的树有两个分支,但分支没有左右之分;一棵二叉树也有两个分支,但有左右之分,左右子树不能交换。 3.

略 4. 先序序列:ABDHIEJKCFLG

中序序列:HDIBJEKALFCG 后序序列:HIDJKEBLFGCA 5. (1)第i 层上的结点数目是m i-1。

(2)编号为n 的结点的父结点如果存在,编号是((n-2)/m)+1。

(3)编号为n 的结点的第i 个孩子结点如果存在,编号是(n-1)*m+i+1。

(4)编号为n 的结点有右兄弟的条件是(n-1)%m ≠

0。其右兄弟的编号是n+1。 6. (1)先序序列和中序序列相同的二叉树为:空树或者任一结点均无左孩子的非空二叉树; (2)中序序列和后序序列相同的二叉树为:空树或者任一结点均无右孩子的非空二叉树;

(3)先序序列和后序序列相同的二叉树为:空树或仅有一个结点的二叉树。 7. ACDBGJKIHFE

a b c d e

g f h i m n j k i 图5-15

8.

ABCDGEIHFJK 9. 先根遍历:ABCDEFGHIJKLMNO 后根遍历:BDEFCAHJIGKNOML 森林转换成二叉树如图

5-16所示。

10. 5-17所示。

50 9

20

30

11 16

14 7

7 2

5

图5-17

B G

D C H K

E I

F J L

M N O

A

图5-16

树和二叉树习题集与答案解析

一、填空题 1. 不相交的树的聚集称之为森林。 2. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_树可采用孩子-兄弟链表(二叉链表)做存储结构,目的是利用二叉树的已有算法解决树的有关问题。 3. 深度为k的完全二叉树至少有2 k-1个结点。至多有2 k-1个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是2 k-2+1。 4. 在一棵二叉树中,度为零的结点的个数为n 0,度为2的结点的个数为n 2,则有n0= n2+1。 5. 一棵二叉树的第i(i≥1)层最多有2 i-1个结点;一棵有n(n>0)个结点的满二叉树共有(n+1)/2个叶子和(n-1)/2个非终端结点。 6.现有按中序遍历二叉树的结果为abc,问有5种不同形态的二叉树 可以得到这一遍历结果。 7. 哈夫曼树是带权路径最小的二叉树。 8. 前缀编码是指任一个字符的编码都不是另一个字符编码的前缀的一种编码方法,是设计不等长编码的前提。 9. 以给定的数据集合{4,5,6,7,10,12,18}为结点权值构造的Huffman树的加权路径长度是165 。 10. 树被定义为连通而不具有回路的(无向)图。 11. 若一棵根树的每个结点最多只有两个孩子,且孩子又有左、右之分,次序不能颠倒,则称此根树为二叉树。

12. 高度为k,且有个结点的二叉树称为二叉树。 2k-1 满 13. 带权路径长度最小的二叉树称为最优二叉树,它又被称为树。 Huffman 14. 在一棵根树中,树根是为零的结点,而为零的结点是 结点。 入度出度树叶 15. Huffman树中,结点的带权路径长度是指由到之间的路径长度与结点权值的乘积。 结点树根 16. 满二叉树是指高度为k,且有个结点的二叉树。二叉树的每一层i上,最多有个结点。 2k-1 2i-1 二、单选题 1. 具有10个叶结点的二叉树中有(B) 个度为2的结点。 (A)8 (B)9 (C)10 (D)11 2.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用_(3)次序的遍历实现编号。 (1)先序(2)中序 (3)后序(4)从根开始按层遍历 3. 由2、3、4、7作为结点权值构造的树的加权路径长度 B 。

数组和广义表习题

一、填空题 1.通常采用___________存储结构来存放数组。对二维数组可有两种存储方法:一种是以___________为主序的存储方式,另一种是以___________为主序的存储方式。 2. 用一维数组B与列优先存放带状矩阵A中的非零元素A[i,j] (1≤i≤n,i-2≤j≤i+2),B 中的第8个元素是A 中的第_ _行,第_ _列的元素。 3.设n行n列的下三角矩阵A已压缩到一维数组B[1..n*(n+1)/2]中,若按行为主序存储,则A[i,j]对应的B中存储位置为_______。 4. 所谓稀疏矩阵指的是_ 。 5. 广义表简称表,是由零个或多个原子或子表组成的有限序列,原子与表的差别仅在于____ 。为了区分原子和表,一般用 ____表示表,用 _____表示原子。一个表的长度是指 __,而表的深度是指__ __ 6、设数组a[1..50,1..80]的基地址为2000,每个元素占2个存储单元,若一行序为主序顺序存储,则元素a[45,68]的存储地址为;若以列序为主序存储,则元素a[45,68]的存储地址为。 7、有一个8ⅹ8的下三角矩阵A,若采用行序为主序顺序存储于一维数组a[1..n],则n的值为。 8、三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素 的、和。 9、已知广义表A=(((a))),则A的表头为:,A的表尾为:。 10、求下列广义表操作的结果: (1)Head ((a,b),(c,d)) == ; //头元素不必加括号 (2)Head(Tail((a,b),(c,d)))== ; (3)Head(Tail(Head((a,b),(c,d))))== ; (4)Tail(Head(Tail((a,b),(c,d))))== ; 11、设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7 ,列下标j从0到3 ,则二维数组W的数据元素共占用_______个字节。W中第6 行的元素和第4 列的元素共占用_________个字节。若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为__________。 12、广义表A= (a,(a,b),((a,b),c)),则它的深度为____________,它的长度为____________。 13、设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的元素(包括对角线上元素)存放在n(n+1)个连续的存储单元中,则A[i][j]与A[0][0]之间有_______个数据元素。 14、广义表的深度是__表展开后所含括号的层数 ____ 二、选择题 1、一个nⅹn的对称矩阵,如果以行或列为主序放入内存,则其容量为( )。 A、n*n B、n*n/2 C、(n+1)*n/2 D、(n+1)*(n+1)/2 2、对数组经常进行的两种基本操作是( ) 。

数据结构二叉树习题含答案

2.1 创建一颗二叉树 创建一颗二叉树,可以创建先序二叉树,中序二叉树,后序二叉树。我们在创建的时候为了方便,不妨用‘#’表示空节点,这时如果先序序列是:6 4 2 3 # # # # 5 1 # # 7 # #,那么创建的二叉树如下: 下面是创建二叉树的完整代码:穿件一颗二叉树,返回二叉树的根 2.2 二叉树的遍历 二叉树的遍历分为:先序遍历,中序遍历和后序遍历,这三种遍历的写法是很相似的,利用递归程序完成也是灰常简单的: 2.3 层次遍历 层次遍历也是二叉树遍历的一种方式,二叉树的层次遍历更像是一种广度优先搜索(BFS)。因此二叉树的层次遍历利用队列来完成是最好不过啦,当然不是说利用别的数据结构不能完成。 2.4 求二叉树中叶子节点的个数 树中的叶子节点的个数= 左子树中叶子节点的个数+ 右子树中叶子节点的 个数。利用递归代码也是相当的简单, 2.5 求二叉树的高度 求二叉树的高度也是非常简单,不用多说:树的高度= max(左子树的高度,右子树的高度) + 1 2.6 交换二叉树的左右儿子 交换二叉树的左右儿子,可以先交换根节点的左右儿子节点,然后递归以左右儿子节点为根节点继续进行交换。树中的操作有先天的递归性。。 2.7 判断一个节点是否在一颗子树中 可以和当前根节点相等,也可以在左子树或者右子树中。 2.8 求两个节点的最近公共祖先 求两个节点的公共祖先可以用到上面的:判断一个节点是否在一颗子树中。(1)如果两个节点同时在根节点的右子树中,则最近公共祖先一定在根节点的右子树中。(2)如果两个节点同时在根节点的左子树中,则最近公共祖先一定在根节点的左子树中。(3)如果两个节点一个在根节点的右子树中,一个在根节点的

目前最完整的数据结构1800题包括完整答案树和二叉树答案

第6章树和二叉树 部分答案解释如下。 12. 由二叉树结点的公式:n=n0+n1+n2=n0+n1+(n0-1)=2n0+n1-1,因为n=1001,所以1002=2n0+n1,在完全二叉树树中,n1只能取0或1,在本题中只能取0,故n=501,因此选E。 42.前序序列是“根左右”,后序序列是“左右根”,若要这两个序列相反,只有单支树,所以本题的A和B均对,单支树的特点是只有一个叶子结点,故C是最合适的,选C。A或B 都不全。由本题可解答44题。 47. 左子树为空的二叉树的根结点的左线索为空(无前驱),先序序列的最后结点的右线索为空(无后继),共2个空链域。 52.线索二叉树是利用二叉树的空链域加上线索,n个结点的二叉树有n+1个空链域。 部分答案解释如下。 6.只有在确定何序(前序、中序、后序或层次)遍历后,遍历结果才唯一。 19.任何结点至多只有左子树的二叉树的遍历就不需要栈。 24. 只对完全二叉树适用,编号为i的结点的左儿子的编号为2i(2i<=n),右儿子是2i+1(2i+1<=n) 37. 其中序前驱是其左子树上按中序遍历的最右边的结点(叶子或无右子女),该结点无右孩子。 38 . 新插入的结点都是叶子结点。 42. 在二叉树上,对有左右子女的结点,其中序前驱是其左子树上按中序遍历的最右边的结点(该结点的后继指针指向祖先),中序后继是其右子树上按中序遍历的最左边的结点(该结点的前驱指针指向祖先)。 44.非空二叉树中序遍历第一个结点无前驱,最后一个结点无后继,这两个结点的前驱线索和后继线索为空指针。 三.填空题

1.(1)根结点(2)左子树(3)右子树 2.(1)双亲链表表示法(2)孩子链表表示法(3)孩 子兄弟表示法 3.p->lchild==null && p->rchlid==null 4.(1) ++a*b3*4-cd (2)18 5.平衡 因子 6. 9 7. 12 8.(1)2k-1 (2)2k-1 9.(1)2H-1 (2)2H-1 (3)H=?log2N?+1 10. 用顺序存储二叉树时,要按完全二叉树的形式存储,非完全二叉树存储时,要加“虚结 点”。设编号为i和j的结点在顺序存储中的下标为s 和t ,则结点i和j在同一层上的条 件是?log2s?=?log2t?。 11. ?log2i?=?log2j?12.(1)0 (2)(n-1)/2 (3)(n+1)/2 (4) ?log2n?+1 13.n 14. N2+1 15.(1) 2K+1-1 (2) k+1 16. ?N/2? 17. 2k-2 18. 64 19. 99 20. 11 21.(1) n1-1 (2)n2+n3 22.(1)2k-2+1(第k层1个结点,总结点个数是2H-1,其双亲是2H-1/2=2k-2)(2) ?log2i?+1 23.69 24. 4 25.3h-1 26. ?n/2? 27. ?log2k?+1 28.(1)完全二叉树 (2)单枝树,树中任一结点(除最后一个结点是叶子外),只有左子女或 只有右子女。 29.N+1 30.(1) 128(第七层满,加第八层1个) (2) 7 31. 0至多个。任意二叉树,度为1的结点个数没限制。只有完全二叉树,度为1的结点个 数才至多为1。 32.21 33.(1)2 (2) n-1 (3) 1 (4) n (5) 1 (6) n-1 34.(1) FEGHDCB (2)BEF(该二叉树转换成森林,含三棵树,其第一棵树的先根次序是 BEF) 35.(1)先序(2)中序 36. (1)EACBDGF (2)2 37.任何结点至多只有右子女 的二叉树。 38.(1)a (2) dbe (3) hfcg 39.(1) . (2) ...GD.B...HE..FCA 40.DGEBFCA 41.(1)5 (2)略 42.二叉排序树 43.二叉树 44. 前序 45.(1)先根次序(2)中根次序46.双亲的右子树中最左下的叶子结点47.2 48.(n+1)/2 49.31(x的后继是经x的双亲y的右子树中最左下的叶结点) 50.(1)前驱 (2)后 继 51.(1)1 (2)y^.lchild (3)0 (4)x (5)1 (6) y (7)x(编者注:本题按 中序线索化) 52.带权路径长度最小的二叉树,又称最优二叉树 53.69 54.(1)6 (2)261 55.(1)80 (2)001(不唯一)56.2n0-1 57.本题①是表达式求值,②是在二叉排序树中删除值为x的结点。首先查找x,若没有x, 则结束。否则分成四种情况讨论:x结点有左右子树;只有左子树;只有右子树和本身是叶 子。 (1)Postoder_eval(t^.Lchild) (2) Postorder_eval(t^.Rchild) (3)ERROR(无此运 算符)(4)A (5)tempA^.Lchild (6)tempA=NULL(7)q^.Rchild (8)q (9)tempA^.Rchild (10)tempA^.Item

数据结构 严蔚敏 清华大学出版社 习题及答案

第1章绪论 (3) 1、填空题 (3) 2、应用题 (3) 第2章线性表 (4) 1、填空题 (4) 2、选择题 (5) 3、判断题 (5) 4、程序设计题 (5) 第3章栈和队列 (8) 1、填空题 (8) 2、选择题 (8) 3、判断题 (9) 第4章串 (9) 1、选择题 (9) 2、判断题 (9) 第5章数组和广义表 (9) 1、填空题 (9) 2、选择题 (9) 3、判断题 (10) 第6章树和二叉树 (10) 1、填空题 (10) 2、选择题 (11)

4、应用题 (11) 5、读程序写结果 (18) 第7章图 (19) 1、填空题 (19) 2、选择题 (19) 3、判断题 (20) 4、应用题 (20) 5、程序设计题 (25) 第8章动态存储管理 (25) 1、填空题 (25) 2、选择题 (25) 3、判断题 (25) 4、应用题 (25) 5、程序设计题 (25) 第9章查找 (26) 1、选择题 (26) 2、判断题 (27) 3、应用题 (27) 4、程序设计题 (28) 第10章内部排序 (29) 1、填空题 (29)

3、判断题 (30) 4、应用题 (30) 第11章外部排序 (31) 第12章文件 (31) 第1章绪论1、填空题 1.常见的数据结构有_线性__结构,__树形___结构,__图形__结构等三种。 2.常见的存储结构有__顺序存储_______结构,__链式存储____结构等两种。 3.数据的基本单位是_数据元素___,它在计算机中是作为一个整体来处理的。 4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,__线性结构____和__非线性结构___。 2、应用题 1、给出以下算法的时间复杂度. void fun(int n) { int i=1,k=100; while(i

树和二叉树习题数据结构

习题六树和二叉树一、单项选择题 1.以下说法错误的是 ( ) A.树形结构的特点是一个结点可以有多个直接前趋B.线性结构中的一个结点至多只有一个直接后继 C.树形结构可以表达(组织)更复杂的数据 D.树(及一切树形结构)是一种"分支层次"结构 E.任何只含一个结点的集合是一棵树 2.下列说法中正确的是 ( ) A.任何一棵二叉树中至少有一个结点的度为2 B.任何一棵二叉树中每个结点的度都为2 C.任何一棵二叉树中的度肯定等于2 D.任何一棵二叉树中的度可以小于2 3.讨论树、森林和二叉树的关系,目的是为了()A.借助二叉树上的运算方法去实现对树的一些运算B.将树、森林按二叉树的存储方式进行存储

C.将树、森林转换成二叉树 D.体现一种技巧,没有什么实际意义 4.树最适合用来表示 ( ) A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C.15 D.不确定 6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。与森林F对应的二叉树根结点的右子树上的结点个数是()。 A.M1 B.M1+M2 C.M3 D.M2+M3 7.一棵完全二叉树上有1001个结点,其中叶子结点的个数是() A. 250 B. 500 C.254 D.505 E.以上答案都不对 8. 设给定权值总数有n 个,其哈夫曼树的结点总数为( ) A.不确定 B.2n C.2n+1 D.2n-1 9.二叉树的第I层上最多含有结点数为() A.2I B. 2I-1-1 C. 2I-1 D.2I -1

二叉树习题及答案

1.设一棵完全二叉树共有699 个结点,则在该二叉树中的叶子结点数? 1根据二叉树的第i层至多有2A(i - 1)个结点;深度为k的二叉树至多有2A k - 1 个结点(根结点的深度为1)”这个性质: 因为2A9-1 < 699 < 2A10-1 , 所以这个完全二叉树的深度是10,前9 层是一个满二叉树, 这样的话,前九层的结点就有2A9-1=511 个;而第九层的结点数是2A(9-1)=256 所以第十层的叶子结点数是699-511=188 个;现在来算第九层的叶子结点个数。由于第十层的叶子结点是从第九层延伸的,所以应该去掉第九层中还有子树的结点。因为第十层有188 个,所以应该去掉第九层中的188/2=94 个;所以,第九层的叶子结点个数是256-94=162,加上第十层有188 个,最后结果是350 个 2完全二叉树:若二叉树中最多只有最下面两层的结点的度可以小于2,并且最下面一层的结点 (叶结点) 都依次排列在该层最左边的位置上,这样的二叉树为完全二叉树。 比如图:完全二叉树除叶结点层外的所有结点数(叶结点层以上所有结点数)为奇数,此题中,699 是奇数,叶结点层以上的所有结点数为保证是奇数,则叶结点数必是偶数,这样我们可以立即选出答案为B!如果完全二叉树的叶结点都排满了,则是满二叉树,易得满二叉树的叶结点数是其以上所有层结点数+1 比如图: 此题的其实是一棵满二叉树,我们根据以上性质,699+1=700,700/2=350,即叶结点数为350,叶结点层以上所有结点数为350-1=349。 3完全二叉树中,只存在度为2 的结点和度为0 的结点,而二叉树的性质中有一条是: nO=n2+1 ; nO指度为0的结点,即叶子结点,n2指度为2的结点,所以2n2+1=699 n2=349 ; n0=350 2.在一棵二叉树上第 5 层的结点数最多是多少一棵二叉树,如果每个结点都是是满的,那么会满足2A(k-1)1 。所以第5 层至多有2A(5-1)=16 个结点! 3.在深度为5 的满二叉树中,叶子结点的个数为答案是16 ~ 叶子结点就是没有后件的结点~ 说白了~ 就是二叉树的最后一层~ 深度为K 的二叉树~ 最多有2Ak-1 个结点~ 最多有2A(k-1) 个结点~ 所以此题~ 最多有2A5-1=31 个结点~ 最多有2A(5-1)=16 个叶子结点~ 4.某二叉树中度为2 的结点有18 个,则该二叉树中有几个叶子结点?结点的度是指树中每个结点具有的子树个数或者说是后继结点数。 题中的度为2 是说具有的2 个子树的结点;二叉树有个性质:二叉树上叶子结点数等于度为2 的结点数加1。 5.在深度为7 的满二叉树中,度为2 的结点个数为多少,就是第一层只有一个节点,他有两个子节点,第二层有两个节点,他们也都有两个子节点以此类推,所以到第6 层,就有2的5次方个节点,他们都有两个子节点最后第7 层都没有子节点了。因为是深度为7 的。 所以就是1+2+4+8+16+32 了 2深度为1的时候有0个 深度为2的时候有1个 深度为3的时候有3个 深度为4的时候有7个 深度为n的时候有(2的n-1次方减1 )个 6?—棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为?

数据结构第六章树和二叉树习题及答案

习题六树和二叉树 一、单项选择题 1.以下说法错误的是() A. 树形结构的特点是一个结点可以有多个直接前趋 B. 线性结构中的一个结点至多只有一个直接后继 C. 树形结构可以表达(组织)更复杂的数据 D. 树(及一切树形结构)是一种”分支层次”结构 E. 任何只含一个结点的集合是一棵树 2. 下列说法中正确的是() A. 任何一棵二叉树中至少有一个结点的度为2 B. 任何一棵二叉树中每个结点的度都为2 C. 任何一棵二叉树中的度肯定等于2 D. 任何一棵二叉树中的度可以小于2 3. 讨论树、森林和二叉树的关系,目的是为了() A. 借助二叉树上的运算方法去实现对树的一些运算 B. 将树、森林按二叉树的存储方式进行存储 C. 将树、森林转换成二叉树 D. 体现一种技巧,没有什么实际意义4.树最适合用来表示() A. 有序数据元素 B .无序数据元素 C.元素之间具有分支层次关系的数据 D .元素之间无联系的数据 5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B .11 C .15 D .不确定 6. 设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1, M2和M3与森林F 对应的二叉树根结点的右子树上的结点个数是()。 A.M1 B .M1+M2 C .M3 D .M2+M3 7.一棵完全二叉树上有1001个结点,其中叶子结点的个数是() A.250 B .500 C .254 D .505 E .以上答案都不对 8. 设给定权值总数有n 个,其哈夫曼树的结点总数为() A. 不确定 B . 2n C . 2n+1 D . 2n-1 9.二叉树的第I 层上最多含有结点数为() I I-1 I-1 I A.2I B .2 I-1 -1 C .2 I-1 D .2 I -1 10.一棵二叉树高度为h, 所有结点的度或为0,或为2,则这棵二叉树最少有()结点A.2h B .2h-1 C .2h+1 D .h+1 11. 利用二叉链表存储树,则根结点的右指针是()。 A.指向最左孩子 B .指向最右孩子 C .空D .非空 12.已知一棵二叉树的前序遍历结果为为()。 A.CBEFDA B .FEDCBA 13.已知某二叉树的后序遍历序列是()。 ABCDEF中序遍历结果 为 C .CBEDFA D dabec, 中序遍历序列是 CBAEDF则后序遍历的结 果 .不定 debac , 它的前序遍历是

数据结构 第五章数组和广义表

第五章数组和广义表:习题 习题 一、选择题 1.假设以行序为主序存储二维数组A[1..100,1..100],设每个数据元素占两个存储单元,基地址为10,则LOC(A[5,5])=( )。 A. 808 B. 818 C. 1010 D. 1020 2.同一数组中的元素( )。 A. 长度可以不同B.不限C.类型相同 D. 长度不限 3.二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈从1到10。从供选择的答案中选出应填入下列关于数组存储叙述中( )内的正确答案。 (1)存放A至少需要( )个字节。 (2)A的第8列和第5行共占( )个字节。 (3)若A按行存放,元素A[8]【5]的起始地址与A按列存放时的元素( )的起始地址 一致。 供选择的答案: (1)A. 90 B. 180 C. 240 D. 270 (2) A. 108 B. 114 C. 54 D. 60 (3)[8][5] B. A[3][10] [5][8] [O][9] 4.数组与一般线性表的区别主要是( )。 A.存储方面 B.元素类型方面 C.逻辑结构方面 D.不能进行插入和删除运算 5.设二维数组A[1..m,1..n]按行存储在数组B[1..m×n]中,则二维数组元素A[i,j]在一维数组B中的下标为( )。 A. (i-l)×n+j B. (i-l)×n+j-l C.i×(j-l) D. j×m+i-l 6.所谓稀疏矩阵指的是( )。 A.零元素个数较多的矩阵 B.零元素个数占矩阵元素中总个数一半的矩阵 C.零元素个数远远多于非零元素个数且分布没有规律的矩阵 D.包含有零元素的矩阵 7.对稀疏矩阵进行压缩存储的目的是( )。 A.便于进行矩阵运算 B.便于输入和输出 C.节省存储空间 D. 降低运算的时间复杂度 8.稀疏矩阵一般的压缩存储方法有两种,即( )。 A.二维数组和三维数组 B.三元组和散列 C.三元组和十字链表 D.散列和十字链表 9.有一个100×90的稀疏矩阵,非0元素有10个,设每个整型数占两字节,则用三元组表示该矩阵时,所需的字节数是( )。 A. 60 B. 66 C.18000 D.33 10. A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+I)/2] 中,则对任一上三角元素a[i][j]对应T[k]的下标k是( )。 A. i(i-l)/2+j B. j(j-l)/2+i C. i(j-i)/2+1 D. j(i-l)/2+1 11.已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出原子项t的运算是( ) A. head(tail(tail(L))) B. tail(head(head(taiI(L)))) C. head(tail(head(taiI(L)))) D. head(tail(head(tail(tail(L)))))

树练习题(答案)

《树》练习题 一、单项选择题 1、在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1 的结点数为2个,则度为0的结点数为()个。 A. 4 B. 5 C. 6 D. 7 2、假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数 为()个。 A. 15 B. 16 C. 17 D. 47 3、假定一棵三叉树的结点数为50,则它的最小高度为()。(根为第0层) A. 3 B. 4 C. 5 D. 6 4、在一棵二叉树上第3层的结点数最多为()(根为第0层)。 A. 2 B. 4 C. 6 D. 8 5、用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中R[1..n],结点 R[i]若有左孩子,其左孩子的编号为结点()。(若存放在R[0..n-1]则左孩子R[2i+1]) A. R[2i+1] B. R[2i] C. R[i/2] D. R[2i-1] 6、将含100个结点的完全二叉树,按照从上层到下层、同层从左到右的次序依次给它 们编以从0开始的连续自然数,则编号为40的结点X的双亲的编号为( )。 A.19 B.20 C. 21 D.39 7、由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为 ()。 A. 24 B. 48 C. 72 D. 53 8、设n , m 为一棵二叉树上的两个结点,在中序遍历序列中n在m前的条件是()。 A. n在m右方 B. n在m 左方 C. n是m的祖先 D. n是m的子孙 9、如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的()。 A. 中序 B. 前序 C. 后序 D. 层次序 10、下面叙述正确的是()。 A. 二叉树不是树 B. 二叉树等价于度为2的树 C. 完全二叉树必为满二叉树 D. 二叉树的左右子树有次序之分 11、任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序()。 A. 不发生改变 B. 发生改变 C. 不能确定 D. 以上都不对 12、已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为()。 A. 1 B. 2 C. 3 D. 4 13、下列图示的顺序存储结构表示的二叉树是( )。

二叉树习题及答案

1.设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数? 1根据“二叉树的第i层至多有2^(i ? 1)个结点;深度为k的二叉树至多有2^k ? 1个结点(根结点的深度为1)”这个性质: 因为2^9-1 < 699 < 2^10-1 ,所以这个完全二叉树的深度就是10,前9层就是一个满二叉树, 这样的话,前九层的结点就有2^9-1=511个;而第九层的结点数就是2^(9-1)=256 所以第十层的叶子结点数就是699-511=188个; 现在来算第九层的叶子结点个数。 由于第十层的叶子结点就是从第九层延伸的,所以应该去掉第九层中还有子树的结点。因为第十层有188个,所以应该去掉第九层中的188/2=94个; 所以,第九层的叶子结点个数就是256-94=162,加上第十层有188个,最后结果就是350个 2完全二叉树:若二叉树中最多只有最下面两层的结点的度可以小于2,并且最下面一层的结点(叶结点)都依次排列在该层最左边的位置上,这样的二叉树为完全二叉树。 比如图: 完全二叉树除叶结点层外的所有结点数(叶结点层以上所有结点数)为奇数,此题中,699就是奇数,叶结点层以上的所有结点数为保证就是奇数,则叶结点数必就是偶数,这样我们可以立即选出答案为B! 如果完全二叉树的叶结点都排满了,则就是满二叉树,易得满二叉树的叶结点数就是其以上所有层结点数+1比如图: 此题的其实就是一棵满二叉树,我们根据以上性质,699+1=700,700/2=350,即叶结点数为350,叶结点层以上所有结点数为350-1=349。 3完全二叉树中,只存在度为2的结点与度为0的结点,而二叉树的性质中有一条就是:n0=n2+1;n0指度为0的结点,即叶子结点,n2指度为2的结点,所以2n2+1=699 n2=349;n0=350 2.在一棵二叉树上第5层的结点数最多就是多少 一棵二叉树,如果每个结点都就是就是满的,那么会满足2^(k-1)1。 所以第5层至多有2^(5-1)=16个结点! 3、在深度为5的满二叉树中,叶子结点的个数为 答案就是16 ~ 叶子结点就就是没有后件的结点~ 说白了~ 就就是二叉树的最后一层~ 深度为K的二叉树~ 最多有2^k-1个结点~ 最多有2^(k-1)个结点~ 所以此题~ 最多有2^5-1=31个结点~ 最多有2^(5-1)=16个叶子结点~ 4、某二叉树中度为2的结点有18个,则该二叉树中有几个叶子结点? 结点的度就是指树中每个结点具有的子树个数或者说就是后继结点数。 题中的度为2就是说具有的2个子树的结点; 二叉树有个性质:二叉树上叶子结点数等于度为2的结点数加1。 5、在深度为7的满二叉树中,度为2的结点个数为多少, 就就是第一层只有一个节点,她有两个子节点,第二层有两个节点,她们也都有两个子节点以此类推,所以到第6层,就有2的5次方个节点,她们都有两个子节点 最后第7层都没有子节点了。因为就是深度为7的。 所以就就是1+2+4+8+16+32了

目前最完整的数据结构1800题包括完整答案 第五章 数组和广义表

第 5 章数组和广义表 一、选择题 1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其 存储地址为1,每个元素占一个地址空间,则a85的地址为()。【燕山大学 2001 一、2 (2分)】 A. 13 B. 33 C. 18 D. 40 2. 有一个二维数组A[1:6,0:7] 每个数组元素用相邻的6个字节存储,存储器按字节编址, 那么这个数组的体积是(①)个字节。假设存储数组元素A[1,0]的第一个字节的地址是0, 则存储数组A的最后一个元素的第一个字节的地址是(②)。若按行存储,则A[2,4]的第 一个字节的地址是(③)。若按列存储,则A[5,7]的第一个字节的地址是(④)。就一般情 况而言,当(⑤)时,按行存储的A[I,J]地址与按列存储的A[J,I]地址相等。供选择的 答案:【上海海运学院 1998 二、2 (5分)】 ①-④: A.12 B. 66 C. 72 D. 96 E. 114 F. 120 G. 156 H. 234 I. 276 J. 282 K. 283 L. 288 ⑤: A.行与列的上界相同 B. 行与列的下界相同 C. 行与列的上、下界都相同 D. 行的元素个数与列的元素个数相同 3. 设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到8 ,j的值为1 到10, 数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( )。 A. BA+141 B. BA+180 C. BA+222 D. BA+225 【南京理工大学 1997 一、8 (2分)】 4. 假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存 储单元,基地址为10,则LOC[5,5]=()。【福州大学 1998 一、10 (2分)】 A. 808 B. 818 C. 1010 D. 1020 5. 数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000 的内存单元中,则元素A[5,5]的地址是( )。【南京理工大学 2001 一、13 (1.5分)】 A. 1175 B. 1180 C. 1205 D. 1210 6. 有一个二维数组A[0:8,1:5],每个数组元素用相邻的4个字节存储,存储器按字节编址, 假设存储数组元素A[0,1]的第一个字节的地址是0,存储数组A的最后一个元素的第一个字 节的地址是(①)。若按行存储,则A[3,5]和 A[5,3]的第一个字节的地址是(②) 和(③)。若按列存储,则A[7,1]和A[2,4]的第一个字节的地址是(④)和(⑤)。【上海海运学院 1996 二、1 (5分)】 ①-⑤:A.28 B.44 C.76 D.92 E.108 F.116 G.132 H.176 I.184 J.188 7. 将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元 素A6665(即该元素下标i=66,j=65),在B数组中的位置K为()。供选择的答案: A. 198 B. 195 C. 197 【北京邮电大学 1998 二、5 (2分)】 8. 二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈 从1到10。从供选择的答案中选出应填入下列关于数组存储叙述中()内的正确答案。(1)存放A至少需要()个字节; (2)A的第8列和第5行共占()个字节; (3)若A按行存放,元素A[8,5]的起始地址与A按列存放时的元素()的起始地

二叉树习题及答案(考试学习)

1.设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数? 1根据“二叉树的第i层至多有2^(i ? 1)个结点;深度为k的二叉树至多有2^k ? 1个结点(根结点的深度为1)”这个性质: 因为2^9-1 < 699 < 2^10-1 ,所以这个完全二叉树的深度是10,前9层是一个满二叉树, 这样的话,前九层的结点就有2^9-1=511个;而第九层的结点数是2^(9-1)=256 所以第十层的叶子结点数是699-511=188个; 现在来算第九层的叶子结点个数。 由于第十层的叶子结点是从第九层延伸的,所以应该去掉第九层中还有子树的结点。因为第十层有188个,所以应该去掉第九层中的188/2=94个; 所以,第九层的叶子结点个数是256-94=162,加上第十层有188个,最后结果是350个 2完全二叉树:若二叉树中最多只有最下面两层的结点的度可以小于2,并且最下面一层的结点(叶结点)都依次排列在该层最左边的位置上,这样的二叉树为完全二叉树。 比如图: 完全二叉树除叶结点层外的所有结点数(叶结点层以上所有结点数)为奇数,此题中,699是奇数,叶结点层以上的所有结点数为保证是奇数,则叶结点数必是偶数,这样我们可以立即选出答案为B! 如果完全二叉树的叶结点都排满了,则是满二叉树,易得满二叉树的叶结点数是其以上所有层结点数+1比如图: 此题的其实是一棵满二叉树,我们根据以上性质,699+1=700,700/2=350,即叶结点数为350,叶结点层以上所有结点数为350-1=349。 3完全二叉树中,只存在度为2的结点和度为0的结点,而二叉树的性质中有一条是:n0=n2+1;n0指度为0的结点,即叶子结点,n2指度为2的结点,所以2n2+1=699 n2=349;n0=350 2.在一棵二叉树上第5层的结点数最多是多少 一棵二叉树,如果每个结点都是是满的,那么会满足2^(k-1)1。 所以第5层至多有2^(5-1)=16个结点! 3.在深度为5的满二叉树中,叶子结点的个数为 答案是16 ~ 叶子结点就是没有后件的结点~ 说白了~ 就是二叉树的最后一层~ 深度为K的二叉树~ 最多有2^k-1个结点~ 最多有2^(k-1)个结点~ 所以此题~ 最多有2^5-1=31个结点~ 最多有2^(5-1)=16个叶子结点~ 4.某二叉树中度为2的结点有18个,则该二叉树中有几个叶子结点? 结点的度是指树中每个结点具有的子树个数或者说是后继结点数。 题中的度为2是说具有的2个子树的结点; 二叉树有个性质:二叉树上叶子结点数等于度为2的结点数加1。 5.在深度为7的满二叉树中,度为2的结点个数为多少, 就是第一层只有一个节点,他有两个子节点,第二层有两个节点,他们也都有两个子节点以此类推,所以到第6层,就有2的5次方个节点,他们都有两个子节点

(完整word版)数据结构第五章数组和广义表习题及答案

习题五数组和广义表 一、单项选择题 1.常对数组进行的两种基本操作是() A.建立与删除 B. 索引与修改 C. 查找与修改 D. 查找与索引2.对于C语言的二维数组DataType A[m][n],每个数据元素占K个存储单元,二维数组中任意元素a[i,j] 的存储位置可由( )式确定. A.Loc[i,j]=A[m,n]+[(n+1)*i+j]*k B.Loc[i,j]=loc[0,0]+[(m+n)*i+j]*k C.Loc[i,j]=loc[0,0]+[(n+1)*i+j]*k D.Loc[i,j]=[(n+1)*i+j]*k 3.稀疏矩阵的压缩存储方法是只存储 ( ) A.非零元素 B. 三元祖(i,j, aij) C. aij D. i,j 4. 数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。 A. 1175 B. 1180 C. 1205 D. 1210 5. A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是()。 A. i(i-1)/2+j B. j(j-1)/2+i C. i(j-i)/2+1 D. j(i-1)/2+1 6. 用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j 沿链移动的操作为( )。 A. j=r[j].next B. j=j+1 C. j=j->next D. j=r[j]-> next 7. 对稀疏矩阵进行压缩存储目的是()。 A.便于进行矩阵运算 B.便于输入和输出 C.节省存储空间 D.降低运算的时间复杂度 8. 已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( )。 A. head(tail(LS)) B. tail(head(LS)) C. head(tail(head(tail(LS))) D. head(tail(tail(head(LS)))) 9. 广义表((a,b,c,d))的表头是(),表尾是()。 A. a B.() C.(a,b,c,d) D.(b,c,d) 10. 设广义表L=((a,b,c)),则L的长度和深度分别为()。 A. 1和1 B. 1和3 C. 1和2 D. 2和3 11. 下面说法不正确的是( )。 A. 广义表的表头总是一个广义表 B. 广义表的表尾总是一个广义表 C. 广义表难以用顺序存储结构 D. 广义表可以是一个多层次的结构 二、填空题 1.通常采用___________存储结构来存放数组。对二维数组可有两种存储方法:一种是以___________为主序的存储方式,另一种是以___________为主序的存储方式。 2. 用一维数组B与列优先存放带状矩阵A中的非零元素A[i,j] (1≤i≤n,i-2≤j≤i+2),B 中的第8个元素是A 中的第_ _行,第_ _列的元素。

树和二叉树练习题答案

第5章树和二叉树练习题答案 一、下面是有关二叉树的叙述,请判断正误 (√)1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。(×)2.二叉树中每个结点的两棵子树的高度差等于1。 (√)3.二叉树中每个结点的两棵子树是有序的。 (×)4.二叉树中每个结点有两棵非空子树或有两棵空子树。 (×)5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。(应当是二叉排序树的特点) (×)6.满二叉树中所有结点个数是2k-1-1,其中k是树的深度。(应2k-1) (×)7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。 (×)8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。(应2i-1)(√)9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。 (正确。用二叉链表存储包含n个结点的二叉树,结点共有2n个链域。由于二叉树中,除根结点外,每一个结点有且仅有一个双亲,所以只有n-1个结点的链域存放指向非空子女结点的指针,还有n+1个空指针。)即有后继链接的指针仅n-1个。 (√)10.具有12个结点的完全二叉树有5个度为2的结点。 二、填空 1.由3个结点所构成的二叉树有5种形态。 2. 一棵深度为6的满二叉树有n1+n2=0+ n2= n0-1=31 个分支结点和26-1 =32个叶子。 注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。 3.一棵具有257个结点的完全二叉树,它的深度为9。 (注:用? log2(n) ?+1= ? 8.xx ?+1=9 4.设一棵完全二叉树有700个结点,则共有350个叶子结点。 5. 设一棵完全二叉树具有1000个结点,则此完全二叉树有500个叶子结点,有499个度为2的结点,有1个结点只有非空左子树,有0个结点只有非空右子树。 答:最快方法:用叶子数=[n/2]=500 ,n2=n0-1=499。另外,最后一结点为2i属于左叶子,右叶子是空的,所以有1个非空左子树。完全二叉树的特点决定不可能有左空右不空的情况,所以非空右子树数=0. 6.一棵含有n个结点的k叉树,可能达到的最大深度为n,最小深度为2。 答:当k=1(单叉树)时应该最深,深度=n(层);当k=n-1(n-1叉树)时应该最浅,深度=2(层),但不包括n=0或1时的特例情况。 7. 二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。因而二叉树的遍历次序有六种。最常用的是三种:前序法(即按N L R次序),后序法(即按L R N次序)和中序法(也称对称序法,即按L N R次序)。这三种方法相互之间有关联。若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则它的后序序列必是 F E G H D C B。 解:法1:先由已知条件画图,再后序遍历得到结果; 法2:不画图也能快速得出后序序列,只要找到根的位置特征。由前 序先确定root,由中序先确定左子树。例如,前序遍历BEFCGDH中, 根结点在最前面,是B;则后序遍历中B一定在最后面。 法3:递归计算。如B在前序序列中第一,中序中在中间(可知左 右子树上有哪些元素),则在后序中必为最后。如法对B的左右子树同 样处理,则问题得解。

第 5 章 数组和广义表答案

第 5 章数组和广义表 一、选择 1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存 储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则 a85的地址为( B )。 A. 13 B. 33 C. 18 D. 40 2. 设有数组A[i,j],数组的每个元素长度为3字节,i的值为1 到 8 ,j的值为1 到10,数组从内存首地址BA开始顺序存放,当用以 列为主存放时,元素A[5,8]的存储首地址为(B )。 A. BA+141 B. BA+180 C. BA+222 D. BA+225 3. 假设以行序为主序存储二维数组A=array[1..100,1..100],设 每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=( B )。 A. 808 B. 818 C. 1010 D. 1020 4. 二维数组A的元素都是6个字符组成的串,行下标i的范围从0 到8,列下标j的范围从0到9。从供选择的答案中选出应填入下列 关于数组存储叙述中()内的正确答案。 (1)存放A至少需要( E )个字节; (2)A的第8列和第5行共占( A )个字节; (3)若A按行存放,元素A[8,5]的起始地址与A按列存放时的元 素( B )的起始地址一致。 供选择的答案: (1)A. 90 B. 180 C. 240 D. 270 E. 540

(2)A. 108 B. 114 C. 54 D. 60 E. 150 (3)A. A[8,5] B. A[4,9] C. A[5,8] D. A[0,9] 5. 若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括 主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中, 则在B中确定aij(i

相关文档
最新文档