数据结构 用C语言描述 课后答案(9)
哈夫曼编码为:
I1:11111 I5:1100 I2:11110 I6: 10
I3:1110 I7: 01 I4:1101 I8: 00
8、八皇后问题 【解答】略
课后练习
一、假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。
二、已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个? 【解答】n0表示叶子结点数,n2表示度为2的结点数,则n0 = n2+1
所以n2= n0 –1=49,当二叉树中没有度为1的结点时,总结点数n=n0+n2=99 三、给出满足下列条件的所有二叉树:
① 前序和后序相同 ② 中序和后序相同 ③ 前序和后序相同 【解答】 (1) 前序与中序相同:空树或缺左子树的单支树; (2) 中序与后序相同:空树或缺右子树的单支树;
(3) 前序与后序相同:空树或只有根结点的二叉树。
四、n个结点的K叉树,若用具有k个child域的等长链结点存储树的一个结点,则空的Child域有多少个?
五、画出与下列已知序列对应的树T:
树的先根次序访问序列为GFKDAIEBCHJ; 树的后根次序访问序列为DIAEKFCJHBG。 六、
七、已知二叉树采用二叉链表存放,要求返回二叉树T的后序序列中的第一个结点指针,是否可不用递归且不用栈来完成?请简述原因. 八、画出和下列树对应的二叉树:
【解答】
九、已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。 十、编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
十一、分别写函数完成:在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。 【解答】
(1) 找结点的先序后继结点
BiTNode *PreSucc (BiTNode *p)
/*在先序线索二叉树中查找p的先序后继结点,并用succ指针返回结果*/ { if (p->Ltag= =0) succ = p->LChild; else succ= p->RChild; return (succ); }
(2) 找结点的后序前驱结点
BiTNode *SuccPre (BiTNode *p)
/*在后序线索二叉树中查找p的后序前驱结点,并用pre指针返回结果*/ { if (p->Ltag= =1) pre = p->LChild; else pre= p->RChild; return (pre);
}
十二、分别写出算法,实现在中序线索二叉树中查找给定结点*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); succ= q;
}
return (succ); }
十三、编写算法,对一棵以孩子-兄弟链表表示的树统计其叶子的个数。 十四、对以孩子-兄弟链表表示的树编写计算树的深度的算法。 十五、已知二叉树按照二叉链表方式存储,利用栈的基本操作写出后序遍历非递归的算法。 十六、设二叉树按二叉链表存放,写算法判别一棵二叉树是否是一棵正则二叉树。正则二叉树是指:在二叉树中不存在子树个数为1的结点。
十七、计算二叉树最大宽度的算法。二叉树的最大宽度是指:二叉树所有层中结点个数的最大值。
十八、已知二叉树按照二叉链表方式存储,利用栈的基本操作写出先序遍历非递归形式的算法。 【解答】
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; } } }
十九、证明:给定一棵二叉树的前序序列与中序序列,可唯一确定这棵二叉树; 给定一棵二叉树的后序序列与中序序列,可唯一确定这棵二叉树; 二十、二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。 二十一、二叉树按照二叉链表方式存储,编写算法,将二叉树左右子树进行交换。 【解答】 算法(一) Void exchange ( BiTree root )
{
p=root;
}
算法(二) 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; } }
if ( p->LChild != NULL || p->RChild != NULL )
{ temp = p->LChild;
p->LChild = p->RChild; p->RChild = temp; exchange ( p->LChild ); exchange ( p->RChild ); }
…… 此处隐藏:852字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




