当前位置:网站首页>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语言*小白的探险历程

【Idea series】idea configuration

Jina 实例秀|七夕神器!比你更懂你女友的AI口红推荐

入门MySql表的增删查改

图文手把手教程--ESP32 一键配网(Smartconfig、Airkiss)

MySQL之my.cnf配置文件

A topic of map

Jenkins User Manual (1) - Software Installation

Graphical Hands-on Tutorial--ESP32 OTA Over-the-Air Upgrade (VSCODE+IDF)

复盘:经典的HR面试问题,这些问题可以挖掘你个人的素质,看看你是否合适合我们部门
随机推荐
audio_policy_configuration.xml配置文件详解
Win11怎么重装显卡驱动程序?Win11显卡驱动怎么卸载重装?
Using .NET to simply implement a high-performance clone of Redis (2)
apache dolphin scheduler 文件dolphinscheduler-daemon.sh详解
datax oracle to oracle离线json文件
Small program containers accelerate the construction of an integrated online government service platform
mysqldump远程备份数据库
萌宠来袭,如何让“吸猫撸狗”更有保障?
MySQL最大建议行数2000w, 靠谱吗?
linux下数据库初始化密码
Rust 入门指南 (用 WASM 开发第一个 Web 页面)
mysql进阶(二十六)MySQL 索引类型
MySQL 45 讲 | 10 MySQL为什么有时候会选错索引?
A topic of map
使用.NET简单实现一个Redis的高性能克隆版(二)
cubemx stm32 afm3000 module gas flow sensor driver code
MySql数据库入门的基本操作
MySQL之my.cnf配置文件
win8和win10下,visual studio 2008 调试出现无响应的卡死问题解决
BOSS 直聘回应女大学生连遭两次性骚扰:高度重视求职者安全,可通过 App 等举报