每日学习一个算法——好数对(同屋兄弟打呼噜震天响,半夜睡不着)
题目
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。
你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。
示例 1:
输入:
Tree 1 Tree 2
1 2
/ \ / \
3 2 1 3
/ \ \
5 4 7
输出:
合并后的树:
3
/ \
4 5
/ \ \
5 4 7
注意: 合并必须从两个树的根节点开始。
通过次数69,841提交次数90,477
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-binary-trees
提示:以下是本篇文章正文内容,下面案例可供参考
一、解题思路
必须说实话,树的知识我都忘光了,也是从头开始学,先看看大佬的代码。
二、代码实现
就一遍
public static TreeNode mergeTrees(TreeNode t1,TreeNode t2){
//如果当前两个节点都为null,那么只能返回一个null
if (t1 == null && t2 == null) return null;
//如果当前节点为空,那么返回另一个不为空的节点值
if (t1 == null) return t2;
if (t2 == null) return t1;
//如果当前两个节点都不为空,那么将其中一个节点1改为两个节点的值并重构树,并返回该节点
//合并两个节点的值
t1.val = t1.val + t2.val;
//合并后根节点的左子树应该为两个树的左子树合并后的结果
t1.left = mergeTrees(t1.left, t2.left);
//合并后根节点的右子树应该为两个树的右子树合并后的结果
t1.right = mergeTrees(t1.right,t2.right);
//返回根节点
return t1;
说实话,我这个真的忘了,从头开始学吧,这个代码,我只是能看懂,也是借鉴的大佬的,就不多赘述了。
总结
学的算法简单的话,不难的话,学习还有什么意义?都会了还学他干嘛?所以还是慢慢啃硬骨头吧。
857

被折叠的 条评论
为什么被折叠?



