当前位置:网站首页>Leetcode刷题——543. 二叉树的直径、617. 合并二叉树(递归解决)
Leetcode刷题——543. 二叉树的直径、617. 合并二叉树(递归解决)
2022-08-04 11:06:00 【lonelyMangoo】
递归
解决这两道题我想先理一理递归的思路,解决递归问题要有三个要素:
- 方法参数和返回值
- 方法参数:方法参数有两种情况
- 如果和前面有关系,那就得设置为全局变量
例如刷题中的538题,就会出问题,导致传过来的值不是最新的,下面的543题也是一样. - 如果和前面没关系,也就是说是一个只会在当前层作用,即局部的,就通过方法体传递过来
- 如果和前面有关系,那就得设置为全局变量
- 返回值
当需要用到返回值的时候,设置返回值,下面两道题都会需要,
而上面提到的刷题中的538题,已经使用sum记录了我需要的值,不需要返回值操作。另外,一般判断的都带返回值,有false直接返回了。
- 终止条件
是自己需要明确的地方,到什么时候停止什么时候结束。 - 函数体
对于节点和数据的操作
下面的题目,我会通过以上三步进行分析
543. 二叉树的直径
543. 二叉树的直径
这道题翻译一下,找出每个节点的左右子树的高度之和中最大的。
为什么抢到每个节点,因为我一开始是用层次遍历做的,以为必然是从跟节点出发的,这个想法是错的,举个例子,根的右子树的高度是1,左子树是两个一样高的子树,高度都为10。
代码:
//写在外面是因为这是全局变量,找到全局最大的。
int ans;
public int diameterOfBinaryTree(TreeNode root) {
depth(root);
return ans;
}
//设置返回值是因为求高度需要用到
private int depth(TreeNode root){
//结束条件
if(root == null){
return 0;
}
//方法体
// 递归求当前节点左右子树的高度
int leftDepth = depth(root.left);
int rightDepth = depth(root.right);
ans = Math.max(ans,leftDepth+rightDepth);
//返回当前子树的高度
return Math.max(leftDepth,rightDepth)+1;
}

617. 合并二叉树
617. 合并二叉树
题目很好理解,思路,有新的就接上去
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
return build(root1, root2);
}
//先序遍历。
//设置返回值是因为建树需要用到
public static TreeNode build(TreeNode root1, TreeNode root2){
//终止条件
//叶子结点,直接返回
if(root1==null && root2==null) return null;
//还有羊毛薅,可冲
if(root1!=null && root2==null) return root1;
if(root1==null && root2!=null) return root2;
//左右子树的重叠部分,需要叠加,
TreeNode node = new TreeNode(root1.val + root2.val);
//建树,这里可见需要用的返回值。
node.left=build(root1.left, root2.left);
node.right=build(root1.right,root2.right);
return node;
}

边栏推荐
- RL78开发环境
- Servlet基础详细版
- Graphical Hands-on Tutorial--ESP32 One-Key Network Configuration (Smartconfig, Airkiss)
- 3-5年以上的功能测试如何进阶自动化?
- 临床研究方法学,到现场,到数据真实发生的地方 | 对话数智 x 张维拓
- AWS Lambda related concepts and implementation approach
- datax oracle to oracle增量同步
- 解析treeSet集合进行自定义类的排序
- Mysql——》类型转换符binary
- 航企纠缠A350安全问题 空客主动取消飞机订单
猜你喜欢

iMeta | German National Cancer Center Gu Zuguang published a complex heatmap visualization method

【LeetCode】701.二叉搜索树中的插入操作

小程序容器加快一体化在线政务服务平台建设

Advanced transcriptome analysis and R data visualization hot registration (2022.10)

Use pytest hook function to realize automatic test result push enterprise WeChat

3-5年以上的功能测试如何进阶自动化?

什么是 DevOps?看这一篇就够了!

MySQL最大建议行数2000w, 靠谱吗?

深度强化学习与APS的一些感想

数据化管理洞悉零售及电子商务运营——零售密码
随机推荐
Difference between ArrayList and LinkedList
zabbix deployment
BOSS 直聘回应女大学生连遭两次性骚扰:高度重视求职者安全,可通过 App 等举报
helm安装
图文手把手教程--ESP32 MQTT对接EMQX本地服务器(VSCODE+ESP-IDF)
浅析深度学习在图像处理中的应用趋势及常见技巧
cubemx stm32 afm3000模块 气体流量传感器 驱动代码
Servlet基础详细版
Digital management insight into retail and e-commerce operations - retail password
手搓一个“七夕限定”,用3D Engine 5分钟实现烟花绽放效果
【Idea series】idea configuration
CVPR 2022 | 从人体网格预测骨架,是真正的生理学骨架!
小程序容器加快一体化在线政务服务平台建设
vscode插件设置——Golang开发环境配置
mongo-导出数据到mysql
STM32入门开发 制作红外线遥控器(智能居家-万能遥控器)
【机器学习】:如何对你的数据进行分类?
Mysql高级篇学习总结13:多表连接查询语句优化方法(带join语句)
WPF 截图控件之画笔(八)「仿微信」
AWS Lambda相关概念与实现思路