
📖이 포스팅은 '파이썬 알고리즘 인터뷰 - 박상길님' 책을 보고 작성되었습니다.
😎문제 : https://leetcode.com/problems/longest-univalue-path/
동일한 값을 지닌 가장 긴 경로를 찾아라.
[상태값 거리 계산 DFS]
class Solution:
result: int = 0
def longestUnivaluePath(self, root: TreeNode) -> int:
def dfs(node: TreeNode):
if node is None:
return 0
# 존재하지 않는 노드까지 DFS 재귀 탐색
left = dfs(node.left)
right = dfs(node.right)
# 현재 노드가 자식 노드와 동일한 경우 거리 1 증가
if node.left and node.left.val == node.val:
left += 1
else:
left = 0
if node.right and node.right.val == node.val:
right += 1
else:
right = 0
self.result = max(self.result, left + right)
return max(left, right)
dfs(root)
return self.result
'자료구조와 알고리즘 > 🥑알고리즘' 카테고리의 다른 글
[알고리즘][트리] - 5. 두 이진 트리 병합 (0) | 2022.06.20 |
---|---|
[알고리즘][트리] - 4. 이진 트리 반전 (0) | 2022.06.20 |
[알고리즘][트리] - 2. 이진 트리의 직경 (0) | 2022.04.26 |
[알고리즘][트리] - 1. 이진 트리의 최대 깊이 (0) | 2022.04.18 |
[알고리즘][최단 거리] - 2.k 경유지 내 가장 저렴한 항공권 (0) | 2022.04.08 |