<aside> 👉🏿 문제 링크
</aside>
<aside> 👉🏿 이진트리 형태의 배열이 주어진다.
동일값을 가진 가장 긴 경로를 찾는 문제이다.
경로의 길이를 출력하면 된다.
</aside>
<aside> 👉🏿 트리를 dfs방식으로 탐색해 나간다.
여기서 현재 노드와 자식노드의 값이 같다면 최대길이를 +1 해준다.
</aside>
<aside> 👉🏿 dfs 방식으로 트리를 탐색한다.
</aside>
def dfs(node):
# 리프노드일 경우 0
if node is None:
return 0
# 리프노드까지 탐색
left = dfs(node.left)
right = dfs(node.right)
<aside> 👉🏿 현재 노드와 자식노드의 값이 같다면 거리 1 증가시킨다.
</aside>
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
<aside> 👉🏿 가장 긴 값을 결과값에 추가한다.
</aside>
self.result = max(self.result, left + right)
return max(left, right)