方法一:递归

思路:

  1. 如果两个树的节点有一个为空返回另外一个
  2. 如果两个都不为空:

    1. 计算两个节点的和保存到第1个树的节点中
    2. 然后递归遍历左右子树
    3. 返回第1个树的节点 ```go /**
    • Definition for a binary tree node.
    • type TreeNode struct {
    • Val int
    • Left *TreeNode
    • Right *TreeNode
    • } / func mergeTrees(root1 TreeNode, root2 TreeNode) TreeNode { if root1 == nil { return root2 }

      if root2 == nil { return root1 }

      //如果两个都不空 root1.Val += root2.Val //如果左子树没有直接进行返回 root1.Left, root1.Right = mergeTrees(root1.Left, root2.Left), mergeTrees(root1.Right, root2.Right)

      return root1 } ```