leetcode和算法----日更

leetcode 617 合并二叉树

2020-02-03  本文已影响0人  Arsenal4ever

直接递归处理就好,没啥好想的。

# 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
        t1Val = t1.val if t1 else 0
        t2Val = t2.val if t2 else 0
        retNode = TreeNode(t1Val + t2Val)
        t1Left = t1.left if t1 else None
        t1Right = t1.right if t1 else None
        t2Left = t2.left if t2 else None
        t2Right = t2.right if t2 else None
        retNode.left = self.mergeTrees(t1Left, t2Left)
        retNode.right = self.mergeTrees(t1Right, t2Right)
        return retNode

看到了一个简洁到极致的写法:

# 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 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
上一篇 下一篇

猜你喜欢

热点阅读