📖이 포스팅은 '파이썬 알고리즘 인터뷰 - 박상길님' 책을 보고 작성되었습니다.
😎문제 : https://leetcode.com/problems/merge-two-binary-trees/
두 이진 트리를 병합하라. 중복되는 노드는 값을 합산한다.
[재귀 탐색]
class Solution:
def mergeTrees(self, t1: Optional[TreeNode], t2: Optional[TreeNode]) -> Optional[TreeNode]:
if t1 and t2: #자식노드가 모두 있을 경우
node = TreeNode(t1.val + t2.val)
node.left = self.mergeTrees(t1.left, t2.left)
node.right = self.mergeTrees(t1.right, t2.right)
return node
else: #자식 노드가 한 쪽만 있는 경우 (둘 다 없으면 None 리턴)
return t1 or t2
- 자식 노드가 둘 다 있을 경우라면 둘 다 모두 진행해준다.
- 둘 중 자식 노드가 없는 경우라면 한 쪽만 리턴한다.
- 모두 존재하지 않으면 None이 리턴된다.
- 후위 순위 탐색 순서로 탐색을 하고 있다.
'자료구조와 알고리즘 > 🥑알고리즘' 카테고리의 다른 글
[알고리즘][트리] - 4. 이진 트리 반전 (0) | 2022.06.20 |
---|---|
[알고리즘][트리] - 3. 가장 긴 동일 값의 경로 (0) | 2022.06.02 |
[알고리즘][트리] - 2. 이진 트리의 직경 (0) | 2022.04.26 |
[알고리즘][트리] - 1. 이진 트리의 최대 깊이 (0) | 2022.04.18 |
[알고리즘][최단 거리] - 2.k 경유지 내 가장 저렴한 항공권 (0) | 2022.04.08 |