LeetCode 607 合并二叉树

435 阅读1分钟

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

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

public TreeNode mergeTrees1(TreeNode t1, TreeNode t2) {
    if (t1 == null || t2 == null) {
        return t1 == null ? t2 : t1;
    }
    LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
    queue.add(t1);
    queue.add(t2);
    while (queue.size() > 0) {
        TreeNode temp1 = queue.removeFirst();
        TreeNode temp2 = queue.removeFirst();
        temp1.val += temp2.val;
        if (temp1.left != null && temp2.left != null) {
            queue.add(temp1.left);
            queue.add(temp2.left);
        } else if (temp1.left == null) {
            temp1.left = temp2.left;
        }
        if (temp1.right != null && temp2.right != null) {
            queue.add(temp1.right);
            queue.add(temp2.right);
        } else if (temp1.right == null) {
            temp1.right = temp2.right;
        }
    }
    return t1;
}