好文档 - 专业文书写作范文服务资料分享网站

数据结构课后习题及解析第六章

天下 分享 时间: 加入收藏 我要投稿 点赞

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,则完全相同, 如果无 LR,…。

b) L D R 与L R D 的相同点:L D,如果无 R,则完全相同。 c) D L R 与L R D 的相同点:D,如果无 L R,则完全相同。 (如果去D,则为空树)

7. n个结点的K叉树,若用具有k个child域的等长链结点存储树的一个结点,则空的Child域有多少个? [提示]:参考 P.119

8.画出与下列已知序列对应的树T:

树的先根次序访问序列为GFKDAIEBCHJ; 树的后根次序访问序列为DIAEKFCJHBG。 [提示]:

(1)先画出对应的二叉树

(2)树的后根序列与对应二叉树的中序序列相同

9.假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为:

0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10 (1)请为这8个字母设计哈夫曼编码, (2)求平均编码长度。

10.已知二叉树采用二叉链表存放,要求返回二叉树T的后序序列中的第一个结点的指针,是否可不用递归且不用栈来完成?请简述原因. [提示]:无右子的“左下端” 11. 画出和下列树对应的二叉树:

12.已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。

13.编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。 [提示]:

[方法1]:(1)按先序查找;(2)超前查看子结点(3)按后序释放; void DelSubTree(BiTree *bt, DataType x) {

if ( *bt != NULL && (*bt) ->data==x ) { FreeTree(*bt); *bt =NULL; }

else DelTree( *bt, x)

void DelTree(BiTree bt, DataType x) { if ( bt )

{ if (bt->LChild && bt->LChild->data==x)

{ FreeTree(bt->LChild); bt->LChild=NULL; }

if (bt->RChild && bt->RChild->data==x)

{ FreeTree(bt->RChild);

bt->RChild=NULL; }

DelTree(bt->LChild, x); DelTree(bt->RChild, x); } }

[方法2]:(1)先序查找;(2)直接查看当前根结点(3)用指针参数; [方法3]:(1)先序查找;(2)直接查看当前根结点

(3)通过函数值,返回删除后结果;

(参示例程序)

14.分别写函数完成:在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。 [提示]:

(1)先查看线索,无线索时用下面规律:

(2)结点*p在先序序列中的后继为其左子或右子; (3)结点*p在后序序列中的前驱也是其左子或右子。

数据结构课后习题及解析第六章

25<50<26可能的最大满二叉树是6层有25=32个叶结点假设将其中x个变为2度结点后,总叶结点数目为50则:2x+(32–x)=50得:x=18此时总结点数目=(26–1)+18×2[方法2]假设完全二叉树的最大非叶结点编号为m,则最大叶结点编号为2m+1,(2m+
推荐度:
点击下载文档文档为doc格式
4ec7x9vmit5gf8w599fw
领取福利

微信扫码领取福利

微信扫码分享