From 2f1e4e18c98063eee3059992e16f55de37723f20 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Thu, 15 Jul 2021 13:10:03 +0800 Subject: [PATCH] =?UTF-8?q?617:=E5=90=88=E5=B9=B6=E4=BA=8C=E5=8F=89?= =?UTF-8?q?=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/cn/MergeTwoBinaryTrees.java | 76 +++++++++++++++++++ .../leetcode/editor/cn/MergeTwoBinaryTrees.md | 25 ++++++ 2 files changed, 101 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/MergeTwoBinaryTrees.java create mode 100644 src/main/java/leetcode/editor/cn/MergeTwoBinaryTrees.md diff --git a/src/main/java/leetcode/editor/cn/MergeTwoBinaryTrees.java b/src/main/java/leetcode/editor/cn/MergeTwoBinaryTrees.java new file mode 100644 index 0000000..39f7d0d --- /dev/null +++ b/src/main/java/leetcode/editor/cn/MergeTwoBinaryTrees.java @@ -0,0 +1,76 @@ +//给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 +// +// 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点 +//。 +// +// 示例 1: +// +// +//输入: +// Tree 1 Tree 2 +// 1 2 +// / \ / \ +// 3 2 1 3 +// / \ \ +// 5 4 7 +//输出: +//合并后的树: +// 3 +// / \ +// 4 5 +// / \ \ +// 5 4 7 +// +// +// 注意: 合并必须从两个树的根节点开始。 +// Related Topics 树 深度优先搜索 广度优先搜索 二叉树 +// 👍 724 👎 0 + +package leetcode.editor.cn; + +import com.code.leet.entiy.TreeNode; + +//617:合并二叉树 +public class MergeTwoBinaryTrees { + public static void main(String[] args) { + //测试代码 + Solution solution = new MergeTwoBinaryTrees().new Solution(); + } + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) + + /** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ + class Solution { + public TreeNode mergeTrees(TreeNode root1, TreeNode root2) { + TreeNode head; + if (root1 != null && root2 != null) { + head = new TreeNode(root1.val + root2.val); + head.left = mergeTrees(root1.left, root2.left); + head.right = mergeTrees(root1.right, root2.right); + } else if (root1 == null && root2 == null) { + head = null; + } else if (root1 == null) { + head = root2; + } else { + head = root1; + } + return head; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/MergeTwoBinaryTrees.md b/src/main/java/leetcode/editor/cn/MergeTwoBinaryTrees.md new file mode 100644 index 0000000..dc2d967 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/MergeTwoBinaryTrees.md @@ -0,0 +1,25 @@ +

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。

+ +

你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。

+ +

示例 1:

+ +
+输入: 
+	Tree 1                     Tree 2                  
+          1                         2                             
+         / \                       / \                            
+        3   2                     1   3                        
+       /                           \   \                      
+      5                             4   7                  
+输出: 
+合并后的树:
+	     3
+	    / \
+	   4   5
+	  / \   \ 
+	 5   4   7
+
+ +

注意: 合并必须从两个树的根节点开始。

+
Related Topics
  • 深度优先搜索
  • 广度优先搜索
  • 二叉树
  • \n
  • 👍 724
  • 👎 0
  • \ No newline at end of file