• 题目要求:

image.png

  • 思路:

    • 修改Tree1,把Tree1和Tree2节点的和直接赋给Tree1
    • 递归
    • 判断,如果t1和t2都不为空,那么把t2与t1的和赋给t1,然后递归调用当前的函数,把t1和t2的左节点作为函数的参数,再把递归调用的整个值赋给t1的左节点(见代码),右节点也是一样
    • 最后把t1或t2返回
  • 核心代码:
if t1 and t2:
    t1.val += t2.val
    t1.left = self.mergeTrees(t1.left,t2.left)
    t1.right = self.mergeTrees(t1.right,t2.right)
return t1 or t2
  • 完整代码:
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode:
        if t1 and t2:
            t1.val += t2.val
            t1.left = self.mergeTrees(t1.left,t2.left)
            t1.right = self.mergeTrees(t1.right,t2.right)
        return t1 or t2

Adrianna
1 声望2 粉丝