Minwoo Dev.

[자료구조] 윤성우의 열혈 자료구조 08-1 이진 트리의 소멸 문제풀이 본문

자료구조

[자료구조] 윤성우의 열혈 자료구조 08-1 이진 트리의 소멸 문제풀이

itisminu 2024. 5. 19. 15:36
728x90
반응형
SMALL

문제

 

우리가 구현한 이진 트리에는 소멸관련 함수가 정의되어 있지 않다. 

때문에 예제에서는 동적으로 할당된 노드를 소멸시키지는 않고 프로그램 종료하였다.

따라서 이진트리를 완전히 소멸시키는 함수를 다음과 같이 선언하고 정의하고자 한다.

 

void DeleteTree(BTreeNode * bt);

 

위 함수가 정의되면, 이는 다음과 같이 호출되어야한다.

 

int main(void){
	BTreeNode * bt1 = MakeBTreeNode();
	 . . . .
    DeleteTree(bt1);
     . . . .
}

 

 

그리고 위와 같이 DeleteTree 함수가 호출되면, bt1 이 가리키는 노드를 루트 노드로 하는 트리 전부가 완전히 소멸되어 한다. 그럼 앞서 완성한 BinaryTree.h 와 BinaryTree2.h 와 BinaryTree2.c 에 위 함수를 선언하고 정의해보자.

 

 

 

정답

void DeleteTree(BTreeNode *bt)
{
    if (bt == NULL)
        return;
    DeleteTree(bt->left);
    DeleteTree(bt->right);

    printf("삭제된 데이터 : %d\n", bt->data);
    free(bt);
}

 

 

실행 결과

728x90
반응형
LIST