617. 合并二叉树


617. 合并二叉树

相应位置数字相加。
输入:
Tree 1                     Tree 2                  
         1                         2                            
        / \                       / \                            
       3   2                     1   3                        
      /                           \   \                      
     5                             4   7                  
输出:
合并后的树:
     3
    /
   4   5
  / \  
 5   4   7

深度遍历

    public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
        if(t1 == null){
            return t2;
        }
        if(t2 == null){
            return t1;
        }
        TreeNode merged = new TreeNode(t1.val + t2.val);
        merged.left = mergeTrees(t1.left, t2.left);
        merged.right = mergeTrees(t1.right, t2.right);
        return merged;
// 作者:LeetCode-Solution
// 链接:https://leetcode-cn.com/problems/merge-two-binary-trees/solution/he-bing-er-cha-shu-by-leetcode-solution/
    }

广度优先遍历

    public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
        if (t1 == null) {
            return t2;
        }
        if (t2 == null) {
            return t1;
        }
        TreeNode merged = new TreeNode(t1.val + t2.val);
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        Queue<TreeNode> queue1 = new LinkedList<TreeNode>();
        Queue<TreeNode> queue2 = new LinkedList<TreeNode>();
        queue.offer(merged);
        queue1.offer(t1);
        queue2.offer(t2);
        while (!queue1.isEmpty() && !queue2.isEmpty()) &#123;
            TreeNode node = queue.poll(), node1 = queue1.poll(), node2 = queue2.poll();
            TreeNode left1 = node1.left, left2 = node2.left, right1 = node1.right, right2 = node2.right;
            if (left1 != null || left2 != null) &#123;
                if (left1 != null && left2 != null) &#123;
                    TreeNode left = new TreeNode(left1.val + left2.val);
                    node.left = left;
                    queue.offer(left);
                    queue1.offer(left1);
                    queue2.offer(left2);
                &#125; else if (left1 != null) &#123;
                    node.left = left1;
                &#125; else if (left2 != null) &#123;
                    node.left = left2;
                &#125;
            &#125;
            if (right1 != null || right2 != null) &#123;
                if (right1 != null && right2 != null) &#123;
                    TreeNode right = new TreeNode(right1.val + right2.val);
                    node.right = right;
                    queue.offer(right);
                    queue1.offer(right1);
                    queue2.offer(right2);
                &#125; else if (right1 != null) &#123;
                    node.right = right1;
                &#125; else &#123;
                    node.right = right2;
                &#125;
            &#125;
        &#125;
        return merged;
   &#125;
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/merge-two-binary-trees/solution/he-bing-er-cha-shu-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
136. 只出现一次的数字 136. 只出现一次的数字
136. 只出现一次的数字难度简单 1712给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,
2021-02-27 future
下一篇 
242. 有效的字母异位词 242. 有效的字母异位词
242. 有效的字母异位词难度简单 347给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例  1:输入: s = “anagram”, t = “nagaram”输出: true 示例 2:输入: s =
2021-02-27 future
  目录