- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南京工业大学数据结构作业答案作业4
第四次作业
1. 设如下图所示的二叉树B的存储结构为二叉链表,root为根指针,结点结构为:(lchild,data,rchild)。其中lchild,rchild分别为指向左右孩子的指针,data为字符型,root为根指针,试回答下列问题:
(1).对下列二叉树B,执行下列算法traversal(root),试指出其输出结果;
C的结点类型定义如下:
struct node
{char data;
struct node *lchild, rchild;
};
C算法如下:
void traversal(struct node *root)
{if (root)
{printf(“%c”, root-data);
traversal(root-lchild);
printf(“%c”, root-data);
traversal(root-rchild);
}
}
(2).假定二叉树B共有n个结点,试分析算法traversal(root)的时间复杂度。
二叉树B
2. 试写出如图所示的二叉树分别按先序、中序、后序遍历时得到的结点序列。
3.把如图所示的树转化成二叉树。
4.画出和下列二叉树相应的森林。
5.编写按层次顺序(同一层自左至右)遍历二叉树的算法 (或:按层次输出二叉树中所有结点) 。
1. 设如下图所示的二叉树B的存储结构为二叉链表,root为根指针,结点结构为:(lchild,data,rchild)。其中lchild,rchild分别为指向左右孩子的指针,data为字符型,root为根指针,试回答下列问题:
(1).对下列二叉树B,执行下列算法traversal(root),试指出其输出结果;
C的结点类型定义如下:
struct node
{char data;
struct node *lchild, rchild;
};
C算法如下:
void traversal(struct node *root)
{if (root)
{printf(“%c”, root-data);
traversal(root-lchild);
printf(“%c”, root-data);
traversal(root-rchild);
}
}
(2).假定二叉树B共有n个结点,试分析算法traversal(root)的时间复杂度。
二叉树B
解:这是“先根再左再根再右”,比前序遍历多打印各结点一次,输出结果为:A B C C E E B A D F F D G G
特点:①每个结点肯定都会被打印两次;②但出现的顺序不同,其规律是:凡是有左子树的结点,必间隔左子树的全部结点后再重复出现;如A,B,D等结点。反之马上就会重复出现。如C,E,F,G等结点。
时间复杂度以访问结点的次数为主,精确值为2*n,时间渐近度为O(n).
2. 试写出如图所示的二叉树分别按先序、中序、后序遍历时得到的结点序列。
答:DLR:A B D F J G K C E H I L M
LDR: B F J D G K A C H E L I M
LRD:J F K G D B H L M I E C A
3.把如图所示的树转化成二叉树。
答:注意全部兄弟之间都要连线(包括度为2的兄弟),并注意原有连线结点一律归入左子树,新添连线结点一律归入右子树。
A
B
E C
K F H D
L G I
M J
4.画出和下列二叉树相应的森林。
答:注意根右边的子树肯定是森林,
而孩子结点的右子树均为兄弟。
5.编写按层次顺序(同一层自左至右)遍历二叉树的算法 (或:按层次输出二叉树中所有结点) 。
解:思路:既然要求从上到下,从左到右,则利用队列存放各子树结点的指针是个好办法。
这是一个循环算法,用while语句不断循环,直到队空之后自然退出该函数。
技巧之处:当根结点入队后,会自然使得左、右孩子结点入队,而左孩子出队时又会立即使得它的左右孩子结点入队,……以此产生了按层次输出的效果。
层序遍历二叉树的递归算法
void LayerOrder(Bitree T) //层序遍历二叉树
{
InitQueue(Q); //建立工作队列
EnQueue(Q,T);
while(!QueueEmpty(Q))
{
DeQueue(Q,p);
visit(p);
if(p-lchild) EnQueue(
您可能关注的文档
- 北京市东城区示范校联考文综试卷.doc
- 北京市普通高中历史必修模块考试样卷3.doc
- 北京市区高三年级第一次综合练习(物理).doc
- 北京市海淀区教师进修学校附属实验中学2013-2014学年高二上学期期中考试试题.doc
- 北京市朝阳区高三年级第一次综合练习文科综合能力测试2013.4.doc
- 北京干部教育网在线学习新领导力.doc
- 北京建设工程监理人员分级管理办法.doc
- 北京市西城区2013年高三二模文综地理试卷及答案.doc
- 北京林业大学2004-2005年木材学试卷.doc
- 北京林业大学美术专业试题.doc
- 2025江浙沪居民睡眠健康小调研报告.pdf
- 毕业论文的开题报告范文.docx
- 团委活动方案(拓展).docx
- 汽车智能驾驶行业深度报告:端到端与AI共振,智驾平权开启新时代.pdf
- 小核酸行业深度:技术平台和适应症不断验证,迎来销售和临床密集兑现期-华福证券-2025.3.31-65页.docx
- 医药生物行业医疗AI专题报告二多组学篇AI技术驱动精准诊断实现重要突破-25031440页.docx
- CXO行业系列报告三寒冬已过行业需求逐步回暖-25031430页.docx
- 全国租赁市场报告2025年3月_可搜索.pdf
- 玩具行业“情绪经济”专题:创新玩法+IP赋能,重新定义玩具-华鑫证券-2025.docx
- 医疗保健行业PCAB抑制剂药物深度报告抑酸药物市场空间广阔PCAB抑制剂大有可为-25.pdf
文档评论(0)