当前位置:网站首页>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;
}
边栏推荐
- leetcode刷题:二叉树21(验证二叉搜索树)
- leetcode刷题:二叉树19(合并二叉树)
- Charles: four ways to modify the input parameters or return results of the interface
- 什么是ESP/MSR 分区,如何建立ESP/MSR 分区
- Connect to blog method, overload, recursion
- How to use PS link layer and shortcut keys, and how to do PS layer link
- Attack and defense world - PWN learning notes
- 利用栈来实现二进制转化为十进制
- On valuation model (II): PE index II - PE band
- 【PyTorch实战】用PyTorch实现基于神经网络的图像风格迁移
猜你喜欢
Attack and defense world - PWN learning notes
About IPSec
NPM instal reports agent or network problems
解密GD32 MCU产品家族,开发板该怎么选?
2022 polymerization process test question simulation test question bank and online simulation test
About sqli lab less-15 using or instead of and parsing
The left-hand side of an assignment expression may not be an optional property access.ts(2779)
SQL Lab (36~40) includes stack injection, MySQL_ real_ escape_ The difference between string and addslashes (continuous update after)
Image pixel read / write operation
Preorder, inorder and postorder traversal of binary tree
随机推荐
【PyTorch实战】用PyTorch实现基于神经网络的图像风格迁移
Preorder, inorder and postorder traversal of binary tree
Pule frog small 5D movie equipment | 5D movie dynamic movie experience hall | VR scenic area cinema equipment
leetcode刷题:二叉树24(二叉树的最近公共祖先)
SQL lab 26~31 summary (subsequent continuous update) (including parameter pollution explanation)
PHP调用纯真IP数据库返回具体地址
Session
leetcode刷题:二叉树21(验证二叉搜索树)
Day-19 IO stream
Object. Simple implementation of assign()
[play RT thread] RT thread Studio - key control motor forward and reverse rotation, buzzer
2022危险化学品生产单位安全生产管理人员考题及在线模拟考试
sql-lab (54-65)
Niuke website
Realize a simple version of array by yourself from
Visual stdio 2017 about the environment configuration of opencv4.1
图像像素读写操作
Four functions of opencv
Airserver automatically receives multi screen projection or cross device projection
普乐蛙小型5d电影设备|5d电影动感电影体验馆|VR景区影院设备