import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param t1 TreeNode类 
     * @param t2 TreeNode类 
     * @return TreeNode类
     */
    public TreeNode mergeTrees (TreeNode t1, TreeNode t2) {
        // write code here
        if (t1 == null && t2 == null) {
            return null;
        }

        if (t1 != null && t2 == null) {
            return t1;
        }

        if (t1 == null && t2 != null) {
            return t2;
        }

        if (t1 != null && t2 != null) {
            t1.val += t2.val;
        }

        merge (t1, t2);

        return t1;
    }

    private void merge (TreeNode t1, TreeNode t2) {

        if (t2.left != null || t2.right != null) {
            if (t2.left != null) {
                if (t1.left == null) {
                    t1.left = new TreeNode(t2.left.val);
                } else {
                    t1.left.val += t2.left.val;
                }
                merge(t1.left, t2.left);
            } 
            if (t2.right != null) {
                if (t1.right == null) {
                    t1.right = new TreeNode(t2.right.val);
                } else {
                    t1.right.val += t2.right.val;
                }
                merge(t1.right, t2.right);
            }
        }
    }
}