第一范文网 - 专业文章范例文档资料分享平台

数据结构c语言描述(第二版)标准答案耿国华西安电子科技大学

来源:用户分享 时间:2025/6/1 13:27:09 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

具有3个结点的树 具有3个结点的二叉树

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

【解答】设树中结点总数为n,则n=n0 + n1 + …… + nk

树中分支数目为B,则B=n1 + 2n2 + 3n3 + …… + knk

因为除根结点外,每个结点均对应一个进入它的分支,所以有n= B + 1 即n0 + n1 + …… + nk = n1 + 2n2 + 3n3 + …… + knk + 1

由上式可得叶子结点数为:n0 = n2 + 2n3 + …… + (k-1)nk + 1

6.5已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个? 【解答】n0表示叶子结点数,n2表示度为2的结点数,则n0 = n2+1

所以n2= n0 –1=49,当二叉树中没有度为1的结点时,总结点数n=n0+n2=99 6.6 试分别找出满足以下条件的所有二叉树:

(1) 前序序列与中序序列相同; (2) 中序序列与后序序列相同; (3) 前序序列与后序序列相同。 【解答】 (1) 前序与中序相同:空树或缺左子树的单支树; (2) 中序与后序相同:空树或缺右子树的单支树; (3) 前序与后序相同:空树或只有根结点的二叉树。

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

0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10 请为这8个字母设计哈夫曼编码。 【解答】

构造哈夫曼树如下:

11

哈夫曼编码为:

I1:11111 I5:1100 I2:11110 I6: 10

I3:1110 I7: 01 I4:1101 I8: 00

6.11画出如下图所示树对应的二叉树。

【解答】

12

6.16分别写出算法,实现在中序线索二叉树T中查找给定结点*p在中序序列中的前驱与后继。在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。

(1)找结点的中序前驱结点

BiTNode *InPre (BiTNode *p)

/*在中序线索二叉树中查找p的中序前驱结点,并用pre指针返回结果*/ { if (p->Ltag= =1) pre = p->LChild; /*直接利用线索*/ else

{/*在p的左子树中查找“最右下端”结点*/

for ( q=p->LChild; q->Rtag= =0; q=q->RChild); pre = q; }

return (pre); }

(2)找结点的中序后继结点

BiTNode *InSucc (BiTNode *p)

/*在中序线索二叉树中查找p的中序后继结点,并用succ指针返回结果*/ { if (p->Rtag= =1) succ = p->RChild; /*直接利用线索*/ else

{/*在p的右子树中查找“最左下端”结点*/

for ( q=p->RChild; q->Ltag= =0; q=q->LChild);

13

succ= q; }

return (succ); }

(3) 找结点的先序后继结点

BiTNode *PreSucc (BiTNode *p)

/*在先序线索二叉树中查找p的先序后继结点,并用succ指针返回结果*/ { if (p->Ltag= =0) succ = p->LChild; else succ= p->RChild; return (succ); }

(4) 找结点的后序前驱结点

BiTNode *SuccPre (BiTNode *p)

/*在后序线索二叉树中查找p的后序前驱结点,并用pre指针返回结果*/ { if (p->Ltag= =1) pre = p->LChild; else pre= p->RChild; return (pre); }

6.20已知二叉树按照二叉链表方式存储,利用栈的基本操作写出先序遍历非递归形式的算法。 【解答】

Void PreOrder(BiTree root) /*先序遍历二叉树的非递归算法*/ {

InitStack(&S); p=root;

while(p!=NULL || !IsEmpty(S) ) { if(p!=NULL) {

Visit(p->data); push(&S,p); p=p->Lchild;

}

else {

Pop(&S,&p); p=p->RChild; } } }

6.26二叉树按照二叉链表方式存储,编写算法将二叉树左右子树进行交换。 【解答】 算法(一) Void exchange ( BiTree root )

{

p=root; if ( p->LChild != NULL || p->RChild != NULL )

14

}

算法(二) Void exchange ( BiTree root )

{

p=root; if ( p->LChild != NULL || p->RChild != NULL )

{

exchange ( p->LChild ); exchange ( p->RChild ); temp = p->LChild;

p->LChild = p->RChild;

p->RChild = temp; } }

第八章

{ temp = p->LChild;

p->LChild = p->RChild; p->RChild = temp; exchange ( p->LChild ); exchange ( p->RChild ); }

第八章答案

8.1 【解答】 5

ASLsucc=(1+2X2+3X4+4X3)/10=2.9

8.5 【解答】

15

数据结构c语言描述(第二版)标准答案耿国华西安电子科技大学.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4imn19s6kq8wrp7230mk0mq5e7eb5x017w7_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top