2016-10-25 4 views
-6

트리의 모든 요소를 ​​해제하기 위해 재귀를 작성하려고했습니다. 데이터 구조체는 정보, 왼쪽 자식에 대한 포인터 및 동생에 대한 포인터가있는 구조체입니다.트리의 모든 요소를 ​​해제하십시오.

어떻게 트리의 모든 노드를 비울 수 있습니까? 나는 후 주문 방법을 시도,하지만 난 그게 바로
이 나무는 당신이 반복적으로 또는 반복적으로이 작업을 수행 할 수있는 두 가지 방법이 있습니다

+1

안녕하십니까. [ask] 및 [mcve]를 읽고 질문을 수정하고 관련 코드를 게시하십시오. 여기에있는 사람들은 독자들을 신경 쓰지 않습니다. 감사합니다 – OldProgrammer

+0

* 시도 했습니까 * 시도 했습니까? 선호하는 [최소, 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve) 코드를 보여주십시오. 그리고 어떻게 작동하지 않는지 알려주세요. –

+0

나는 트라이 드하지만 사이트는 내 게시물이 기준을 충족하지 못했다는 메시지를 계속 표시했습니다. –

답변

0

진 아닙니다 당신에게

감사 얻을 수 없습니다.

재귀 적 접근은 코드 작성이 가장 간단합니다. 노드에 자손 또는 형제가 있는지 확인하고 각 노드에서 "자유 ​​노드"를 호출 한 다음 호출 된 노드를 해제하는 "자유 노드"함수를 작성합니다. 루트 노드에서이 "자유 노드"작업을 수행하면 전체 트리가 해제됩니다.

반복 접근 방식은 동일한 작업을 수행하지만 노드 목록을 유지합니다. 다음은 반복 접근법의 스케치입니다.

  1. 루트 노드 만 포함하는 노드에 대한 포인터 목록을 만듭니다.
  2. 목록의 맨 위에있는 노드를 가져 와서 모든 형제를 추가하고 하위 노드를 노드 목록에 지시 한 다음 해당 노드를 해제하고 목록에서 제거하십시오.
  3. 목록이 비어 있으면 중지하십시오.
  4. 2 단계로 이동하십시오.
관련 문제