【leetcode】617. Merge Two Binary Trees

花了蛮长时间。。

# 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的剪枝,如果左子树或右子树为空,那么剩下的直接用另一棵树的所有填上即可,不用再一个节点一个节点去补上。

-------------------------------------------------


猜你喜欢

转载自blog.csdn.net/u014381464/article/details/80721369