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