合并二叉树

合并二叉树

问题

这个题目说的是,给你两棵二叉树,你要把它们合并起来形成一棵新的二叉树。合并规则是对应节点上的数字相加得到新节点的数字,如果有一个节点为空,则直接使用非空节点的数字,如果两个节点都为空,则合并后也为空。

比如说,给你的两棵二叉树是:

    1
   / \
  3   5
   \   \
    7   9     2
    / \
   4   6
  /
 8

你要返回合并后的二叉树是:

     3
    / \
   7   11
  / \    \
 8   7    9

代码

public class AlgoCasts {

  public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
      val = x;
    }
  }

  // Time: O(n), Space: O(n)
  public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
    if (t1 == null && t2 == null) return null;
    if (t1 != null && t2 == null) return t1;
    if (t2 != null && t1 == null) return t2;
    t1.val += t2.val;
    t1.left = mergeTrees(t1.left, t2.left);
    t1.right = mergeTrees(t1.right, t2.right);
    return t1;
  }

}

  转载请注明: ForwardXu 合并二叉树

 上一篇
判断二叉树是否相同 判断二叉树是否相同
判断二叉树是否相同问题 这个题目说的是,给你两个二叉树,你要判断它们是否相同。这里所谓相同,指的是两棵树结构相同,并且相应节点上的数值相等。 比如说,给你的两棵二叉树都是: 1 1 / \ / \
2018-12-28
下一篇 
二叉树前序遍历 二叉树前序遍历
二叉树前序遍历问题 这个题目说的是,给你一个二叉树,你要返回一个数组,表示二叉树前序遍历的结果。 比如说,给你的二叉树是: 1 / \ 2 3 \ 4 / 5 你要返回的前序遍历结果是:
2018-12-28
  目录