来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/merge-two-binary-trees 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

给你两棵二叉树: root1 和 root2 。
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。
返回合并后的二叉树。
注意: 合并过程必须从两个树的根节点开始。

解答

  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val, left, right) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.left = (left===undefined ? null : left)
  6. * this.right = (right===undefined ? null : right)
  7. * }
  8. */
  9. /**
  10. * @param {TreeNode} root1
  11. * @param {TreeNode} root2
  12. * @return {TreeNode}
  13. */
  14. var mergeTrees = function(root1, root2) {
  15. if (root1 && !root2) return root1;
  16. if (!root1 && root2) return root2;
  17. if (!root1 && !root2) return null;
  18. root1.val += root2.val;
  19. root1.left = mergeTrees(root1.left, root2.left);
  20. root1.right = mergeTrees(root1.right, root2.right);
  21. return root1;
  22. };