第六章代码题(三)

这篇具有很好参考价值的文章主要介绍了第六章代码题(三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 前篇:

第一章代码题_永无魇足的博客-CSDN博客

第二章代码题(一)_永无魇足的博客-CSDN博客

第二章代码题(二)_永无魇足的博客-CSDN博客

第二章代码题(三)_永无魇足的博客-CSDN博客

第三章代码题(一)_永无魇足的博客-CSDN博客

第三章代码题(一)_永无魇足的博客-CSDN博客

第六章代码题(一)_永无魇足的博客-CSDN博客 

第六章代码题(二)_永无魇足的博客-CSDN博客

 6.二叉链表存储的二叉树中,输出从根节点到每个叶子结点的路径。

可以创建一个数组,如果不是叶子结点那么就将结点的值存进数组内,当找到叶子结点时将当前数组的元素全部进行输出。此外,需要一个索引永远指向数组插入元素的位置。这个索引极其重要,它除了向数组中插入元素外,遍历也靠它输出,其次递归中显示其他叶子结点的路径也靠它覆盖相应位置的元素。

代码:

//第六题 找从根结点到每个叶子结点的路径
void  FindPath(BiTree btree,ElemType a[],int length ) {
	if (btree==NULL)
	{
		return;
	}
	if (btree->Lchild==NULL&&btree->Rchild==NULL)
	{
		printf("\n%d的路径为:", btree->data);

		for (int  i = 0; i < length; i++)
		{
			printf("%d,", a[i]);
		}
	}
	else
	{
		a[length++] = btree->data;
		FindPath(btree->Lchild, a, length);
		FindPath(btree->Rchild, a, length);

	}
}

验证:

int main() {

	BiTree btree = (BiTree)malloc(sizeof(BiTnode));
	InitTree(&btree);

	srand(time(NULL));

	for (int  i = 0; i < MaxSize; i++)
	{
		btree=AddNode(btree, rand()%100+1);
	}
	printf("\n中序遍历\n");
	MiddleTraversal(btree);
	printf("\n前序遍历\n");
	BeforeTraversal(btree);
	
	int a[10] = { 0 };
	int length = 0;
	FindPath(btree, a, length);
    return 0;
}

执行结果:

第六章代码题(三),数据结构与算法课后代码题(王曙燕),算法,数据结构

 画出二叉树:

第六章代码题(三),数据结构与算法课后代码题(王曙燕),算法,数据结构

7.二元数组,按先序次序输出各结点的内容及相应的层次数。

这道题也是在函数里面对数组赋值,输出的形式是一个结点的值,和该结点所在的层数。那么直接将二元数组的列数定为2,行数和二叉树的结点数一样多(二叉树的结点数一直是用宏定义来操控的,所以直接设置为MAXSIZE即可)。

先序决定代码的顺序,那么就是中左右,先进行赋值,然后进行递归。

函数的参数除了二叉树和二元数组外,还有一个整数k,用来确定结点的层数。这里的思路和第六题有点相像,也从侧面体现了递归的特点;同一层数的结点的k的值不会受到影响,即各干各的。

第六题是直接将数组对应位置的元素覆盖了,很明显这道题得保证对应位置的元素,所以就要靠全局变量的特点,即便是递归,插入元素的位置的索引也一直在往前移动。

代码:

int i = 0;
//第七题 二元组输出先序次序的各结点的内容及相应的层次数。
void   TreeLevel(int a[MaxSize][2], BiTree btree,int k) {

	if (btree==NULL)
	{
		return;
	}

	a[i][0] =  btree->data;
	a[i++][1] = k++;
	TreeLevel(a,btree->Lchild,k);
	TreeLevel(a, btree->Rchild,k);

}

 验证:

int main() {

	BiTree btree = (BiTree)malloc(sizeof(BiTnode));
	InitTree(&btree);

	srand(time(NULL));

	for (int  i = 0; i < MaxSize; i++)
	{
		btree=AddNode(btree, rand()%100+1);
	}
	printf("\n中序遍历\n");
	MiddleTraversal(btree);
	printf("\n前序遍历\n");
	BeforeTraversal(btree);
//第七题
	int b[MaxSize][2];
	TreeLevel(b, btree,1);
	printf("\n");
	for (int i = 0; i < MaxSize; i++)
	{
		printf("{");
		printf("%d,", b[i][0]);
		printf("%d", b[i][1]);
		printf("}");
	}
	return 0;
}

执行结果:

第六章代码题(三),数据结构与算法课后代码题(王曙燕),算法,数据结构

 按照先序次序的要求直接从结果就能看出来是正确的,将二叉树画出来验证对应的层数是否正确:

第六章代码题(三),数据结构与算法课后代码题(王曙燕),算法,数据结构文章来源地址https://www.toymoban.com/news/detail-628984.html

到了这里,关于第六章代码题(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构 第六章 图——图的遍历

    在前面我们知道,树是一种非线性结构,为了方便它在计算机中的存储,对树进行遍历使它线性化。 而图同样也是一种非线性结构,但是图又是一种不同于树的多对多结构,所以在前面我们将其转换为了多个一对多的结构来描述它的存储结构。 图的遍历同树类似,也是从某

    2024年02月08日
    浏览(46)
  • 王道计算机考研 数据结构C语言复现-第六章-队列

     这篇文章收录了王道考研课程中涉及的数据结构的所有代码。此外,本博客可能会添加一些额外的代码(不仅限于王道考研),因为408考试中会频繁考察一些冷门的知识点,所以这篇博客会涵盖所有相关的代码。这也是我数据结构的第一轮复习,希望能与大家共同进步。由

    2024年01月21日
    浏览(43)
  • 数据库原理第六章课后题答案(第四版)

    一、选择题 1. B    2. C    3. C    4. A    5. C 6. B    7. C    8. B    9. D    10. C 11. D   12. B   13. B   14. D   15. B 16. B   17. C 二、填空题 数据库的结构设计、数据库的行为设计 新奥尔良法 分析和设计阶段、实现和运行阶段 需求分析 概念结构设计 自顶向下、自底向

    2024年02月01日
    浏览(51)
  • python数据分析与应用:第六章课后实训--应用sklearn分析竞标数据(全)

    实验时间 2023-04-26 (gcc的同学不要抄袭呀!) 一、实验目的 1、掌握skleam转换器的用法。 2、掌握训练集、测试集划分的方法。 3、掌握使用sklearm进行PCA降维的方法。 4、掌握 sklearn 估计器的用法。 5、掌握聚类模型的构建与评价方法。 6、掌握分类模型的构建与评价方法。

    2024年02月08日
    浏览(100)
  • 【数据结构与算法】树和二叉树课后习题

    知一棵树边的集合为 I , M , I , N , E , I , B , E , B , D , A , B , G , J , G , K , C , G , C , F , H , L , C , H , A , C {I,M,I,N,E,I,B,E,B,D,A,B,G,J, G,K,C,G,C,F,H,L,C,H,A,C} I , M , I , N , E , I , B , E , B , D , A , B , G , J , G , K , C , G , C , F , H , L , C , H , A , C 请画出这棵树并回答下列问题: 哪个是根结点? 哪些是叶

    2024年02月12日
    浏览(38)
  • 【2023王道数据结构】王道数据结构课后代码题汇总答案C、C++代码实现完整版大全(可直接运行)

    本文章为 2023王道数据结构专栏 导航贴,正在积极更新中! 本专栏文章将王道一些 课后算法设计题目 的全部实现(答案解析全部都是伪码或者函数的部分实现,不可调试运行), 同时包含各个章节的经典算法数据结构的实现以及一些经典的算法 本专栏使用人群:复习数据

    2024年02月16日
    浏览(41)
  • 云计算导论课后习题第六章

      1 、分布式文件的具体形式是什么?能否用图形方式表达出简单的情况?主要优点是什么?         具体形式:文件分开存储在不同的文件夹下;         图形表达:         主要优点:数据有多个备份,一个文件夹下的数据如果丢失的话,可以在其他文件夹下找

    2024年02月07日
    浏览(42)
  • 【夜深人静学习数据结构与算法 | 第六篇】贪心算法

    目录 前言: 引入: 贪心算法:     455. 分发饼干 - 力扣(LeetCode) 376. 摆动序列 - 力扣(LeetCode) 53. 最大子数组和 - 力扣(LeetCode) 122. 买卖股票的最佳时机 II - 力扣(LeetCode)         在本文我们将为大家介绍在计算机中比较常见的一种算法:贪心算法。他并没有具体的代

    2024年02月09日
    浏览(53)
  • Python篇——数据结构与算法(第六部分:哈希表)

      目录 1、直接寻址表 2、直接寻址表缺点 3、哈希 4、哈希表 5、解决哈希冲突 6、拉链法 7、常见哈希函数 8、哈希表的实现 8.1迭代器iter()和__iter__ 8.2str()和repr() 8.3代码实现哈希表 8.4哈希表的应用   直接寻址表:key为k的元素放到k的位置上 改进直接寻址表:哈希(

    2024年02月10日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包