花了蛮长时间。。
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def mergeTrees(self, t1, t2): """ :type t1: TreeNode :type t2: TreeNode :rtype: TreeNode """ if (not t1) and (not t2): return None elif (not t1): t1 = TreeNode(t2.val) #t1.val = t2.val elif (not t2): t2 = TreeNode(0) else: t1.val = t1.val+t2.val t1.left = self.mergeTrees(t1.left,t2.left) t1.right = self.mergeTrees(t1.right,t2.right) return t1
164ms 11.01%
----------------------------------------------------------
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def mergeTrees(self, t1, t2): """ :type t1: TreeNode :type t2: TreeNode :rtype: TreeNode """ if not t1: return t2 #contain t2==None, return None if not t2: return t1 #if t2 null, just use all other t1 t1.val += t2.val #t1 and t2 both not null t1.left = self.mergeTrees(t1.left,t2.left) t1.right = self.mergeTrees(t1.right,t2.right) return t1
141ms 40.01%
对于上面的if-else的剪枝,如果左子树或右子树为空,那么剩下的直接用另一棵树的所有填上即可,不用再一个节点一个节点去补上。
-------------------------------------------------