<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)