当前位置:网站首页>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;
}

边栏推荐
- 什么是终端特权管理
- C#/VB.NET:在 Word 中设置文本对齐方式
- Graphical Hands-on Tutorial--ESP32 One-Key Network Configuration (Smartconfig, Airkiss)
- winform 在Datatable插入一笔数据
- 图文手把手教程--ESP32 MQTT对接EMQX本地服务器(VSCODE+ESP-IDF)
- 语音社交app源码——具备哪些开发优势?
- 【LeetCode】701.二叉搜索树中的插入操作
- 标准C语言学习总结12
- 8月活动|51CTO十七周年庆,发博文得茶具/笔记本/T恤等礼品!
- 面试蚂蚁(P7)竟被MySQL难倒,奋发图强后二次面试入职蚂蚁金服
猜你喜欢

【LeetCode】98.验证二叉搜索树

Maple 2022 software installation package download and installation tutorial

cubemx stm32 afm3000 module gas flow sensor driver code

【Idea series】idea configuration

Heap Sort

cubemx stm32 afm3000模块 气体流量传感器 驱动代码

在 .NET MAUI 中如何更好地自定义控件

萌宠来袭,如何让“吸猫撸狗”更有保障?

Graphical Hands-on Tutorial--ESP32 One-Key Network Configuration (Smartconfig, Airkiss)

Events in August | 51CTO's 17th Anniversary Celebration, post a blog post to get gifts such as tea sets/notebooks/T-shirts!
随机推荐
tp5+微信小程序 分片上传
Mysql高级篇学习总结13:多表连接查询语句优化方法(带join语句)
【黄啊码】MySQL入门—1、SQL 的执行流程
Mysql高级篇学习总结14:子查询优化、排序优化、GROUP BY优化、分页查询优化
map的一道题目<单词识别>
MySQL之my.cnf配置文件
从零开始Blazor Server(7)--使用Furion权限验证
《迁移学习导论》第2版,升级内容抢先看!
onlyoffice设置跟踪变化trackChanges默认为对自己启动
【虹科案例】基于3D相机组装家具
在 .NET MAUI 中如何更好地自定义控件
MySql数据库入门的基本操作
使用.NET简单实现一个Redis的高性能克隆版(二)
【LeetCode】899.有序队列
Why are all hotel bathrooms transparent?
粤黔协作,山海同心!578种贵州特色农产品走进粤港澳大湾区
【LeetCode】700.二叉搜索树
A topic of map
mysqldump远程备份数据库
单调栈一些题目练习