《数据结构——C语言描述》习题及答案-耿国华-2

第一种存储结构

第二种存储结构

5.7求下列广义表运算的结果: (6) HEAD[((a,b),(c,d))];

(a,b) (7) TAIL[((a,b),(c,d))];

((c,d)) (8) TAIL[HEAD[((a,b),(c,d))]];

(b)

(9) HEAD[TAIL[HEAD[((a,b),(c,d))]]];

b

(10) TAIL[HEAD[TAIL[((a,b),(c,d))]]];

(d)

第六章 实习题

习题

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

2.对题1所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。

3.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,nk个度为k的结点,则该树中有多少个叶子结点?

[提示]:参考 P.116 性质3 ∵ n=n0 + n1 + …… + nk

B=n1 + 2n2 + 3n3 + …… + knk n= B + 1

∴ n0 + n1 + …… + nk = n1 + 2n2 + 3n3 + …… + knk + 1 ∴ n0 = n2 + 2n3 + …… + (k-1)nk + 1

4.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。 [提示]:参考 P.148

6. 已知二叉树有50个叶子结点,则该二叉树的总结点数

至少应有多少个? [提示]: [方法1]

(1)一个叶子结点,总结点数至多有多少个?

结论:可压缩一度结点。

(2)满二叉树或完全二叉树具有最少的一度结点 (3)可能的最大满二叉树是几层?有多少叶结点?

如何增补?

25<50<26

可能的最大满二叉树是6层 有 25 = 32个叶结点

假设将其中x个变为2度结点后,总叶结点数目为

50

则:2x + (32 – x) = 50

得:x = 18

此时总结点数目= ( 26 – 1) + 18×2 [方法2]

假设完全二叉树的最大非叶结点编号为m, 则最大叶结点编号为2m+1, (2m+1)-m=50 m=49

总结点数目=2m+1=99 [方法3]

由性质3:n0=n2+1 即:50=n2+1 所以:n2=49

令n1=0得:n= n0 + n2=99

7. 给出满足下列条件的所有二叉树:a) 前序和中序相同 b) 中序和后序相同 c) 前序和后序相同 [提示]:去异存同。

a) D L R 与L D R 的相同点:D R,如果无 L,则完全

联系客服:779662525#qq.com(#替换为@)