LeetCode 617. Merge Two Binary Trees - Python
Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.
You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree.
Example 1:
Input:
Tree 1 Tree 2
1 2
/ \ / \
3 2 1 3
/ \ \
5 4 7
Output:
Merged tree:
3
/ \
4 5
/ \ \
5 4 7
Note: The merging process must start from the root nodes of both trees.
Solution 1 (Recusive) :
class Solution:
def mergeTrees(self, t1, t2):
"""
:type t1: TreeNode
:type t2: TreeNode
:rtype: TreeNode
"""
if t1 is None:
return t2
if t2 is None:
return t1
t1.val = t1.val + t2.val
t1.left = self.mergeTrees(t1.left, t2.left)
t1.right = self.mergeTrees(t1.right, t2.right)
return t1
Solution 2 (Recusive) :
class Solution:
def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode:
if not t1 and not t2:
return None
if bool(t1) ^ bool(t2):
return t1 if t1 else t2
t1.val += t2.val
t1.left = self.mergeTrees(t1.left, t2.left)
t1.right = self.mergeTrees(t1.right, t2.right)
return t1
Solution 3 (Iterative) :
class Solution:
def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode:
if not t1 and not t2:
return None
if bool(t1) ^ bool(t2):
return t1 if t1 else t2
queue = deque([(t1, t2)])
while queue:
tree1, tree2 = queue.popleft()
tree1.val += tree2.val
if not tree1.left and tree2.left:
tree1.left = tree2.left
elif tree1.left and tree2.left:
queue.append((tree1.left, tree2.left))
if not tree1.right and tree2.right:
tree1.right = tree2.right
elif tree1.right and tree2.right:
queue.append((tree1.right, tree2.right))
return t1
관련 개념 :
'Python > PS in Python' 카테고리의 다른 글
LeetCode 136. Single Number - Python (0) | 2020.08.06 |
---|---|
LeetCode 104. Maximum Depth of Binary Tree - Python (0) | 2020.08.04 |
[코드업 기초 100제] 1001~1099 (파이썬) - 문제 풀이용 (0) | 2020.07.28 |
[코드업 기초 100제] 1001~1099 (파이썬) (0) | 2020.07.28 |
[코드업 기초 100제] 1091~1099 (파이썬) (0) | 2020.07.26 |
댓글