数据结构练习题(含答案) 联系客服

发布时间 : 星期一 文章数据结构练习题(含答案)更新完毕开始阅读aa99027658fb770bf68a552c

5. p->next, s 6. O (1) , O (n)

习题3 栈和队列

3.1 单项选择题

1. 一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是____。 A. edcba B. decba C. dceab D. abcde

2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为____。 A. i B. n=i C. n-i+1 D. 不确定

3. 栈结构通常采用的两种存储结构是____。

A. 顺序存储结构和链式存储结构 B. 散列方式和索引方式 C. 链表存储结构和数组

D. 线性存储结构和非线性存储结构

4. 判定一个顺序栈ST(最多元素为m0)为空的条件是____。

A. top !=0 B. top= =0 C. top !=m0 D. top= =m0-1 5. 判定一个顺序栈ST(最多元素为m0)为栈满的条件是____。

A. top!=0 B. top= =0 C. top!=m0 D. top= =m0-1 6. 栈的特点是____,队列的特点是____。 A. 先进先出 B. 先进后出

7. 向一个栈顶指针为HS的链栈中插入一个s所指结点时,则执行__ __。 (不带空的头结点)

A. HS—>next=s;

B. s—>next= HS—>next; HS—>next=s; C. s—>next= HS; HS=s;

D. s—>next= HS; HS= HS—>next;

8. 从一个栈顶指针为HS的链栈中删除一个结点时,用x保存被删结点的值,则执行__ __。(不带空的头结点)

A. x=HS; HS= HS—>next; B. x=HS—>data;

C. HS= HS—>next; x=HS—>data; D. x=HS—>data; HS= HS—>next; 9. 一个队列的数据入列序列是1,2,3,4,则队列的出队时输出序列是____ 。 A. 4,3,2,1 B. 1,2,3,4 C. 1,4,3,2 D. 3,2,4,1

10. 判定一个循环队列QU(最多元素为m0)为空的条件是____。

A. rear - front= =m0 B. rear-front-1= =m0 C. front= = rear D. front= = rear+1

11. 判定一个循环队列QU(最多元素为m0, m0= =Maxsize-1)为满队列的条件是____。 A. ((rear- front)+ Maxsize)% Maxsize = =m0 B. rear-front-1= =m0 C. front= =rear D. front= = rear+1

12. 循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是____。 A. (rear-front+m)%m B. rear-front+1

C.rear-front-1 D. rear-front

13. 栈和队列的共同点是____。

A. 都是先进后出 B. 都是先进先出 C. 只允许在端点处插入和删除元素 D. 没有共同点 3.2 填空题(将正确的答案填在相应的空中)

1. 向量、栈和队列都是____结构,可以在向量的____位置插入和删除元素;对于栈只能在____插入和删除元素;对于队列只能在____插入元素和____删除元素。

2. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动____个元素。 3. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动____个元素。

4. 在具有n个单元的循环队列中,队满时共有____个元素。

习题答案

3.1 1. C 2. C 3. A 4. B 5.D 6. BA 7.C 8. B 9. C 10. C

11. A 12. A 13.C

3.2 1. 线性、任何、栈顶、队尾、队首 2. n-i+1 3. n-i 4. n-1 习题6 树和二叉树 6.1 单项选择题

1. 由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法____。

A. 正确 B. 错误

2. 假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为 个。 A.15 B.16 C.17 D.47

3. 按照二叉树的定义,具有3个结点的不同形状的二叉树有____种。

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

4. 按照二叉树的定义,具有3个不同数据结点的不同的二叉树有____种。

A. 5 B. 6 C. 30 D. 32

5. 深度为5的二叉树至多有____个结点。

A. 16 B. 32 C. 31 D. 10

6. 设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为_ ___。

A. 2h B. 2h-1 C. 2h+1 D. h+1

7. 对一个满二叉树,m个树叶,n个结点,深度为h,则____ 。

h

A. n=h+m B. h+m=2n C. m=h-1 D. n=2 -1

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

A.不发生改变 B.发生改变 C.不能确定 D.以上都不对

9. 如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉树的后序为____。 A. uwvts B. vwuts C. wuvts D. wutsv

10. 二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法____。 A. 正确 B. 错误

11. 某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是____。

A. bdgcefha B. gdbecfha C. bdgaechf D. gdbehfca 12. 在一非空二叉树的中序遍历序列中,根结点的右边____。 A. 只有右子树上的所有结点 B. 只有右子树上的部分结点 C. 只有左子树上的部分结点 D. 只有左子树上的所有结点 13. 如图6.1所示二叉树的中序遍历序列是____。

A. abcdgef B. dfebagc C. dbaefcg D. defbagc

a a b c b c d g

d e f

e 图6.1 h g f 14. 一棵二叉树如图6.2所示,其中序遍历的序列为__ __。 a 图6.2 A. abdgcefh B. dgbaechf C. gdbehfca D.

abcdefgh

15.设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前的条件是 。

A.a在b的右方 B.a在b的左方 C.a是b的祖先 D.a是b的子孙

16. 已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是____。 A. acbed B. decab C. deabc D. cedba

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

A. 二叉链表 B. 广义表存储结构 C. 三叉链表 D. 顺序存储结构 18. 如图6.3所示的4棵二叉树,____不是完全二叉树。

(A) (B) (C) (D)

图6.3

20. 在线索化二叉树中,t所指结点没有左子树的充要条件是____。

A. t—>left=NULL B. t—>ltag=1 C. t—>ltag=1且t—>left=NULL D. 以上都不对

21. 二叉树按某种顺序线索化后,任一结点均有指向其前驱和后续的线索,这种说法____。 A. 正确 B. 错误

22. 二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。这种说法____。 A. 正确 B. 错误

23. 具有五层结点的二叉平衡树至少有____个结点。

A. 10 B. 12 C. 15 D. 17

24. 树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里,我们把由树转化得到的二叉树叫做这棵数对应的二叉树。结论____是正确的。

A.树的先根遍历序列与其对应的二叉树的先序遍历序列相同 B.树的后根遍历序列与其对应的二叉树的后序遍历序列相同 C.树的先根遍历序列与其对应的二叉树的中序遍历序列相同 D.以上都不对

25. 树最适合用来表示____。

A. 有序数据元素 B. 无序数据元素

C. 元素之间具有分支层次关系的数据 D. 元素之间无联系的数据 6.2 填空题(将正确的答案填在相应的空中)

1. 有一棵树如图6.5所示,回答下面的问题:

⑴ 这棵树的根结点是____; ⑵ 这棵树的叶子结点是____; k1 ⑶ 结点k3的度是____;

k 2 k 4 k ⑷ 这棵树的度是____; 3 ⑸ 这棵树的深度是____;

k 5 k 6 ⑹ 结点k3的子女是____;

⑺ 结点k3的父结点是__

图6.5 一棵树 k 7

2. 指出树和二叉树的三个主要差别____、____、____。__;

3. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是___ _。

4. 一棵二叉树的结点数据采用顺序存储结构,存储于数组t中,如图6.6所示,则该二叉树的链接表示形式为__ __。 5. 深度为k的完全二叉树至少有____个结点。至多有____个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是____。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 e a f d g c j l h b 图6.6 一棵二叉树的顺序存储数组t

6. 在一棵二叉树中,度为零的结点的个数为n 0,度为2的结点的个数为 n 2,则有n0=____。

7. 一棵二叉树的第i(i≥1)层最多有____个结点;一棵有n(n>0)个结点的满二叉树共有____个叶子和____个非终端结点。

8. 结点最少的树为____,结点最少的二叉树为____。

9. 现有按中序遍历二叉树的结果为abc,问有____种不同形态的二叉树可以得到这一遍历结果,这些二叉树分别是____。 10. 由如图6.7所示的二叉树,回答以下问题:

⑴ 其中序遍历序列为____;

a ⑵ 其前序遍历序列为____;

⑶ 其后序遍历序列为____; b c

de f

h 6.3 简答题

i 1. 根据二叉树的定义,具有三个结点的二叉树有5种不同的形态,请将它们分别画出。 图6.7 一棵二叉树

2. 假设一棵 二叉树的先序序列为EBADCFHGIKJ和中序序列为ABCDEFGHIJK。

请画出该树。

3. 由如图6.7所示的二叉树,回答以下问题: a (1)画出该二叉树的中序线索二叉树; (2)画出该二叉树的后序线索二叉树;

b c d (3)画出该二叉树对应的森林。

4. 已知一棵树如图6.8所示,转化为一棵二叉树,表示为____。

e f g

图6.8 一棵树

5. 以数据集{4,5,6,7,10,12,18}为结点权值,画出构造Huffman树的每一步图示,计算其带权路径长度为。 6. 一棵含有N个结点的k叉树,可能达到的最大深度和最小深度各为多少?

7. 证明:一棵满k叉树上的叶子结点数n0和非叶子结点数n1之间满足以下关系: n0=(k-1)n1+1

6.4 算法设计题

1. 编写按层次顺序(同一层自左至右)遍历二叉树的算法。 2.试编写算法,对一棵二叉树,统计叶子的个数。

3.试编写算法,对一棵二叉树根结点不变,将左、右子树进行交换,树中每个结点的左、右子树进行交换。 7. 假设用于通讯的电文仅有八个字母(a,b,c,d,e,f,g,h)组成,字母在电文中出现的频率分别为0.07, 0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0.10。试为这八个字母设计哈夫曼编码。

使用0-7的二进制表示形式是另一种编码方案。对于上述实例,比较两种方案的优缺点。

8. 试编写算法,对一棵以孩子-兄弟链表表示的树统计叶子的个数。假设一棵 二叉树的先序序列为EBADCFHGIKJ和中序序列为ABCDEFGHIJK。请画出该树。

习题答案

6.1 1. B 2. B 3. C 4. C 5. C 6. A 7. D 8. A 9. C 10. A

11. D 2. A 13. B 14. B 15. B 16. D 17. C 18. C 19. B 20. B 21. B 22. B 23. B 24. A 25. C

6.2

1. ⑴ k1 ⑵ k2,k5,k7,k4 ⑶ 2 ⑷ 3 ⑸ 4 ⑹ k5,k6 ⑺ k1

2. 树的结点个数至少为1(不同教材规定不同),而二叉树的结点个数可以为0;

e 树中结点的最大度数没有限制,而二叉树结点的最大度数为2; 树的结点无左、右之分,而二叉树的结点有左、右之分; af 3. 树可采用孩子-兄弟链表(二叉链表)做存储结构,目的并利用二叉树的已有算法解

d g 决树的有关问题。

4. 如图6.9所示

c l h j k-1kk-2

5. 2 、 2 -1 、 2 +1 6. n2+1

i-1[logn+1]-1[logn+1]b 7. 2 22 22 –1

图6.9 8. 只有一个结点的树;空的二叉树

9. 5;如图6.10所示