정점에 레이블을 지정하려는 방향이없는 트리가 있습니다. 리프 노드에는 레이블이 하나 있어야합니다. 그런 다음 나뭇잎이 제거되었다고 가정하십시오. 남아있는 나무에서는 잎에 2를 표시해야합니다. 이 과정은 모든 정점이 레이블을 가질 때까지 계속 진행됩니다. 이 작업을 수행하는 이유는 정점을 대기열에 저장하고 "첫 번째 잎"을 통과하기 때문입니다. 이 시간 을 수행하는 쉬운 방법이 있습니까?
모든 단계에서 BFS를 수행하여 문제를 해결할 수 있습니다. 그러나 최악의 경우 모든 단계에서 모든 정점을 통과하고 정확히 두 개의 잎을 제거하고 대기열에 넣습니다. 나는 이차 시간이 걸린다고 생각합니다.
또 다른 아이디어는 먼저 모든 잎을 찾은 다음 모든 잎에서 BFS를 수행하는 것이 었습니다. 이것은 나에게 원하는 해결책을주지 않습니다. 예를 들어, 아래 그림과 같이 일종의 "크라운 그래프"를 고려하십시오. 원하는 솔루션이 표시되지만 각 리프에서 BFS를 시작하면 두 개의 레이블 만 사용됩니다.
이상적으로 선형 시간 알고리즘도 설명하고 구현하기가 쉽습니다.