너비 우선 탐색 예제 - 3
문제 분석
가장 긴 경로를 찾는 방법과 관련된 아이디어가 필요한 문제다.
가장 긴 경로 찾기 아이디어
임의의 노드에서 가장 긴 경로로 연결된 노드는 트리의 지름에 해당하는 두 노드 중 하나다.
손으로 풀어보기
그래프를 인접 리스트로 저장한다. 이때
(노드, 가중치)를 표현해야 하기 때문에 클래스(튜플)로 선언한다.임의의 노드에서 BFS를 수행하고 탐색할 때 각 노드의 거리를 배열에 저장한다.

2번 과정에서 얻은 리스트에서 임의의 노드와 가장 먼 노드를 찾는다. 그런 다음 그 노드부터 BFS를 다시 수행한다. 마찬가지로 탐색할 때 각 노드의 거리를 리스트에 저장한다.

3번 과정에서 거리 배열에 저장한 값 중 가장 큰 값이 이 트리의 지름이 된다.
슈도코드
코드 구현 - 파이썬
코드 구현 - 자바
Last updated