C语言数据结构二叉树递归的方法


本篇内容介绍了“C语言数据结构二叉树递归的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!二叉树的精髓在于遍历。遍历掌握了后,剩下的问题迎刃而解。“工欲善其事必利其器”1.所以先创建一个结构体。2.手动先构造一颗如图所示的二叉树。遍历顺序:根 左子树 右子树思路:1.把每个节点都想成是一棵树。2.当树为空时。3.当树不为空时,先遍历左子树,后遍历右子树注意:前中后序遍历不同处只在printf打印的顺序的位置。打印结果:1 2 3 NULL NULL NULL 4 5 NULL NULL 6 NULL NULL递归分析图:递归题目的万能的解法。就是画递归图。二叉树的所有题目,假如你不会,赶快 画递归图 吧由于递归太庞大,图片太小看不清,所以我把左免费云主机域名子树和右子树分开又截了图1.红线部分代表压栈递归。2.绿线部分代表 返回左子树右子树遍历顺序:左子树 根 右子树打印结果NULL 3 NULL 2 NULL 1 NULL 5 NULL 4 NULL 6 NULL遍历顺序:左子树 右子树 根打印结果NULL NULL 3 NULL 2 NULL NULL 5 NULL NULL 6 4 15.层序遍历思路:借助先进先出的性质,上一层节点出的时候,带下一层的节点进去。1.先把根入队列。2.根节点出来的时候,左右孩子进去。思想:把大问题逐步分割为子问题。思路:1.树为空时返回0个节点。(树为空不意味着才开始就是空树,而是递归到最后一个为NULL的树返回)2.树不为空时返回自己的1个节点+上一颗树返回的节点的个数。2.求叶子节点个数思路:1.树为NULL时,返回0.2.两颗子树都不为NULL时,返回1.3.不满足以上两种情况,继续递归左右子树。思想:求上图第3层节点个数。1.站在第1层来看,就是求第3层节点的个数2.站在第2层的角度来看,就是求第2层节点的个数3.站在第3层的角度来看,就是求第1层节点的个数思路:1.当树为空时返回02.当k为1时返回1。3.不满足1和2,继续递归左右子树。思想:1.把最小规模的问题写在最前面作为限制2.不满足最小规模的问题,则继续递归。将问题一步一步拆分为不可分割的子问题。思路:相当于二叉树的后序遍历。先把左右子树遍历完后,开始遍历根,对根进行free。思路:对一串字符进行先序遍历,递归遍历二叉树,当遇见#时开始返回 连接 树。通过前序遍历的数组”ABD##E#H##CF##G##”构建二叉树思路:1.层序遍历,空节点也进队列2.出到空节点以后,出队列中所有数据,如果全是空,则是完全二叉树思路:二叉树的最大深度等价于:左右子树的最大深度 + 1以下题目均属于LeetCode的 简单 题目如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。思想:1.看一棵树的三个部分是否相同,相同则继续递归下一颗树,直到树为空。给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。给你一个二叉树的根节点 root , 检查它是否轴对称。思路:用到了上一题判断两棵树是否相同的思想。5.二叉树的前序遍历题目思路1.求节点个数,开辟数组大小。2.前序遍历存放到数组中给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。我犯的BUG:只是对二叉树里面的值进行交换,但是无法避免空指针。一直都是空指针的错误,因为root总会为空,root->data总会遇见空指针所以以后尽量要多想着交换地址。“C语言数据结构二叉树递归的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: Python from import导包ModuleNotFoundError No module named报错怎么解决

这篇文章主要介绍了Pythonfromimport导包ModuleNotFoundErrorNomodulenamed报错怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Pythonfromimport导包ModuleNot…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 04/28 11:48
下一篇 04/28 11:49

相关推荐