当前位置: 首页> 游戏> 单机 > 力扣--二叉树典型题目合集(递归思想)

力扣--二叉树典型题目合集(递归思想)

时间:2025/7/13 13:06:49来源:https://blog.csdn.net/qq_71416673/article/details/142182286 浏览次数:0次

本篇文章将向各位介绍三道典型的二叉树题目,每一道题我在做的时候都是想不到,一看题解就看懂了,然后骂自己是个SB~

下面三道的分类都是简单,能理解递归的就能做,大佬可以先略过了~

好了,话不多说,先来看第一道

104. 二叉树的最大深度

先上代码

 int maxDepth(TreeNode* root) {if(root==nullptr){return 0;}int l_max=maxDepth(root-> left);int r_max=maxDepth(root->right);return max(l_max,r_max)+1;}

这道题,直接递归就可以获得最后的结果,先递归获取左子树最大深度,再递归获取右子树最大深度,最后+1表示根节点,然后取左右子树的最大值,就是整棵树的最大深度!

第二道题

100. 相同的树

再上代码

bool isSameTree(TreeNode* p, TreeNode* q) {if(p==nullptr || q==nullptr)return p==q;return p->val==q->val && isSameTree(p->left,q->left) && isSameTree(p->right,q->right);}

这道题就更简单了,直接两行代码就完事儿了,但是你能想到并写出来其实还是有点儿不太容易,因为递归的思想没有理解透彻,那做这么多的题可能就有点儿难受了,因为你会发现最后刷完题下来最多只是你做过的会了,稍微上点儿难度就开始卡了~

第三道

226. 翻转二叉树
也是直接上代码

TreeNode* invertTree(TreeNode* root) {if(root==nullptr)return root;TreeNode* lefts=invertTree(root->left);TreeNode* rights=invertTree(root->right);root->left=rights;root->right=lefts;return root;}

好了,如果你能看懂前两道的递归思路,那么最后一道题的递归也不难理解~

看完这三道题,有没有总结出递归的思想是啥,如果没有建议找一道简单的题然后照着题解先抄一遍,然后debug每一行代码看看具体是怎么执行的;这里我先说说我的一点看法,递归无非就是很多个for循环,一层套一层,但是每次层他做的事儿又都是相同的,最后返回的结果又能供上一层继续使用~

好了,希望读到这儿你能有所收获,也不枉我上班还在这儿摸鱼写博客了~

关键字:力扣--二叉树典型题目合集(递归思想)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: