<aside> 👉🏿 문제 링크

</aside>

문제 정리

<aside> 👉🏿 이진 트리인 root가 주어진다.

가장 긴 경로를 구하라.

</aside>

예제

<aside> 👉🏿 아래 예시에서 가장긴 루트는 4-2-1-3 혹은 5-2-1-3이다.

</aside>

Untitled

Input: root = [1,2,3,4,5]
Output: 3

접근 방법

<aside> 👉🏿 dfs 방식으로 왼쪽 오른쪽 각각 리프노드까지 탐색한다.

리프 노드는 시작지점이므로 상태값을 0으로 지정한다.

부모 노드로 올라가면서 상태값을 1씩 더한다.

거리를 +1을 해줘서 구해준다.

</aside>

코드 정리

<aside> 👉🏿 먼저 None인 노드는 -1을 주어 패널티를 주고 시작한다.

</aside>

def dfs(node):
            if not node:
                return -1

<aside> 👉🏿 dfs 탐색을 시작한다.

</aside>

def dfs(node):
            if not node:
                return -1
            # 왼쪽, 오른쪽의 각 리프노드까지 탐색
            left = dfs(node.left)
            right = dfs(node.right)