LeetCode 617 合併二叉樹
阿新 • • 發佈:2020-09-21
LeetCode 617 合併二叉樹
問題描述:
給定兩個二叉樹,想象當你將它們中的一個覆蓋到另一個上時,兩個二叉樹的一些節點便會重疊。
你需要將他們合併為一個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為NULL 的節點將直接作為新二叉樹的節點。
遞迴
執行用時:1 ms, 在所有 Java 提交中擊敗了63.92%的使用者
記憶體消耗:39.1 MB, 在所有 Java 提交中擊敗了36.56%的使用者
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { return merge(t1, t2); } //在root1上合併 public TreeNode merge(TreeNode root1, TreeNode root2) { if(root1==null && root2==null) { //都為null則返回null return null; } else if(root1==null && root2!=null) { //root1=null則新建子樹 root1 = new TreeNode(root2.val); } else if(root1!=null) { //root1!=null則合併root2的節點值 root1.val += root2==null? 0:root2.val; } //合併左子樹、右子樹 TreeNode leftRoot1 = merge(root1.left, root2==null? null: root2.left); TreeNode rightRoot1 = merge(root1.right, root2==null? null: root2.right); //合併新節點 root1.left = leftRoot1; root1.right = rightRoot1; return root1; } }