題目
給定兩個二叉樹,想象當(dāng)你將它們中的一個覆蓋到另一個上時,兩個二叉樹的一些節(jié)點(diǎn)便會重疊。
你需要將他們合并為一個新的二叉樹。合并的規(guī)則是如果兩個節(jié)點(diǎn)重疊,那么將他們的值相加作為節(jié)點(diǎn)合并后的新值,否則不為 NULL 的節(jié)點(diǎn)將直接作為新二叉樹的節(jié)點(diǎn)。
示例 1:
輸入:
Tree 1 Tree 2
1 2
/ \ / \
3 2 1 3
/ \ \
5 4 7
輸出:
合并后的樹:
3
/ \
4 5
/ \ \
5 4 7
注意: 合并必須從兩個樹的根節(jié)點(diǎn)開始。
解題思路
遞歸
# Definition for a binary tree node.
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 or t2:
t0 = TreeNode((t1.val if t1 else 0) + (t2.val if t2 else 0))
t0.left = self.mergeTrees(t1.left if t1 else None, t2.left if t2 else None)
t0.right = self.mergeTrees(t1.right if t1 else None, t2.right if t2 else None)
return t0
return None