当前位置:网站首页>Leetcode brush questions: binary tree 19 (merge binary tree)
Leetcode brush questions: binary tree 19 (merge binary tree)
2022-07-07 12:47:00 【Taotao can't learn English】
617. Merge binary tree
Given two binary trees , Imagine when you overlay one of them on the other , Some nodes of two binary trees will overlap .
You need to merge them into a new binary tree . The rule for merging is if two nodes overlap , Then add their values as the new values after node merging , Otherwise, no NULL The node of will be the node of the new binary tree directly .
Example 1:
Be careful : The merge must start at the root of both trees .
Based on one of the trees , Recursively traverse two trees at the same time , Each time, judge whether the current node exists in the non benchmark tree , Then add , non-existent , Then skip , The current node does not exist , Exist in non benchmark tree , Then add this node with the passed parent node , Remember to mark which tree it is .
package com.programmercarl.tree;
import com.programmercarl.util.GenerateTreeNode;
import java.util.ArrayDeque;
import java.util.Deque;
/** * @ClassName MergeTrees * @Descriotion TODO * @Author nitaotao * @Date 2022/7/5 18:02 * @Version 1.0 **/
public class MergeTrees {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if (root1 == null && root2 != null) {
return root2;
}
if (root1 != null && root2 == null) {
return root1;
}
if (root1 == null && root2 == null) {
return null;
}
merge(root1, root2, false,null);
return root1;
}
public void merge(TreeNode root1, TreeNode root2, boolean isLeft,TreeNode parent) {
if (root1 == null && root2 == null) {
return;
}
// Based on the first tree
if (root1 != null && root2 != null) {
root1.val = root1.val + root2.val;
}
if (root1 == null && root2 != null) {
// If 1 No, ,2 Yes
if (isLeft) {
parent.left = root2;
return;
} else {
parent.right = root2;
return;
}
}
// If 1 Yes , 2 No, Do not change
if (root1 != null && root2 == null) {
return;
}
merge(root1.left, root2.left, true,root1);
merge(root1.right, root2.right, false,root1);
}
public static void main(String[] args) {
new MergeTrees().mergeTrees(
GenerateTreeNode.generateTreeNode("[9,-1,null,-2,0,-4,null,null,8,-5,-3,6,null,null,null,null,null,null,7]")
,
GenerateTreeNode.generateTreeNode("[-1,-2,0,null,null,null,8,6,null,null,7]")
);
}
}
Let's take a look at the big guy's code
// recursive
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if (root1 == null) return root2;
if (root2 == null) return root1;
TreeNode newRoot = new TreeNode(root1.val + root2.val);
newRoot.left = mergeTrees(root1.left,root2.left);
newRoot.right = mergeTrees(root1.right,root2.right);
return newRoot;
}
边栏推荐
- @Resource和@Autowired的区别?
- [statistical learning method] learning notes - logistic regression and maximum entropy model
- [play RT thread] RT thread Studio - key control motor forward and reverse rotation, buzzer
- HZOJ #235. 递归实现指数型枚举
- idm服务器响应显示您没有权限下载解决教程
- 2022-07-07日报:GAN发明者Ian Goodfellow正式加入DeepMind
- 用mysql查询某字段是否有索引
- 【PyTorch实战】用PyTorch实现基于神经网络的图像风格迁移
- [爬虫]使用selenium时,躲避脚本检测
- 通讯协议设计与实现
猜你喜欢
2022聚合工艺考试题模拟考试题库及在线模拟考试
普乐蛙小型5d电影设备|5d电影动感电影体验馆|VR景区影院设备
leetcode刷题:二叉树27(删除二叉搜索树中的节点)
RHSA first day operation
Day-18 hash table, generic
"Series after reading" my God! It's so simple to understand throttling and anti shake~
About sqli lab less-15 using or instead of and parsing
2022广东省安全员A证第三批(主要负责人)考试练习题及模拟考试
How to apply @transactional transaction annotation to perfection?
Aike AI frontier promotion (7.7)
随机推荐
图形对象的创建与赋值
SQL Lab (41~45) (continuous update later)
【从 0 开始学微服务】【03】初探微服务架构
Vxlan static centralized gateway
Day-15 common APIs and exception mechanisms
Object. Simple implementation of assign()
SQL head injection -- injection principle and essence
编译 libssl 报错
基于NeRF的三维内容生成
Niuke website
About IPSec
Multi row and multi column flex layout
[pytorch practice] image description -- let neural network read pictures and tell stories
The hoisting of the upper cylinder of the steel containment of the world's first reactor "linglong-1" reactor building was successful
聊聊Redis缓存4种集群方案、及优缺点对比
如何将 @Transactional 事务注解运用到炉火纯青?
Solutions to cross domain problems
GCC compilation error
Ctfhub -web SSRF summary (excluding fastcgi and redI) super detailed
[learn microservices from 0] [03] explore the microservice architecture