时间复杂度(O(n)),思想:先序遍历
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 == None and t2 == None:
return None
tc = TreeNode((t1.val if t1 is not None else 0)
+ (t2.val if t2 is not None else 0))
def merge_a2b(ta: TreeNode, tb: TreeNode, tc: TreeNode):
ta_r, ta_l = (ta.right, ta.left) if ta is not None else (None, None)
tb_r, tb_l = (tb.right, tb.left) if tb is not None else (None, None)
if (ta_r or tb_r) is not None:
tc.right = TreeNode((ta_r.val if ta_r is not None else 0)
+ (tb_r.val if tb_r is not None else 0))
merge_a2b(ta_r, tb_r, tc.right)
if (ta_l or tb_l) is not None:
tc.left = TreeNode((ta_l.val if ta_l is not None else 0)
+ (tb_l.val if tb_l is not None else 0))
merge_a2b(ta_l, tb_l, tc.left)
merge_a2b(t1, t2, tc)
return tc