내가 별도의 트리를 구성 할 레이블 루트 노드와 노드 N을 통해 0을 표시하는 나무 (정렬되지 않은)를 고려하는 각 비의 부모 - 루트 노드 m은 레이블이 m보다 작은 가장 가까운 조상입니다.
필요한 출력은 다음과 같습니다 :이 나무 주어진 예를 들어
, 그것은 이동 있도록 노드 2, 상위 5보다 적은 라벨을 가지고
공지 사항 나무 위로; 노드 4는 부모 7 및 조부모 5보다 적으므로 트리를 그 위대한 할아버지 0으로 이동합니다.
순진한 방법은 각 노드를 독립적으로 처리하여 낮은 레이블이 나타날 때까지 위쪽으로 이동하는 것입니다. 이 같은 상황에 매우 비싼된다 : 그것은 같은 느낌
이러한 재 배열 처리를위한 매우 간단 하위 차 알고리즘이 있어야한다, 그러나 나는 찾을도 바로 칵테일을 수립 또는 수 없습니다 중복 프로세싱의 양을 최소화하기위한 확실한 트래버 설 순서. 이것이 잘 정의 된 솔루션의 일반적인 문제입니까?
아 맞습니다. 똑바로, 사소한 그것이 작동하는 것을 볼 수 있습니다. 재귀의 반복 버전도 만들기 쉽습니다. 덕분에 @ xenteros. . – MorT
@MorT 반복 알고리즘을 사용하여 재귀를 바꿀 필요가 없습니다. 동일한 성능과 명확한 코드를 사용할 수 있습니다. btw, 우리는 유용한 답변을 upvote하고 추가로 가장 좋은 것을 받아들입니다. – xenteros
여기에 제시된 문제는 큰 시스템의 광범위하게 정리 된 판입니다. 실제 구현에서는 트리 깊이에 대한 보증을 제공하지 않으며 포함은 꼬리 재귀에 도움이되지 않습니다. 에티켓에 대한 도움말 주셔서 감사합니다;) – MorT