Page 422 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 422
31 }
32 temp = *p;
33 *p = next;
34 free(temp);
35
36 return 0;
37 }
38 (실습 10-2[E]에서 계속)
Search 함수와 Add 함수의 첫 번째 매개변수의 자료형은 BinNode *이지만 Remove 함수
의 첫 번째 매개변수의 자료형은 BinNode **입니다. 이는 루트만 있는 이진검색트리에서 루
트 노드를 삭제하는 경우에는 루트 포인터를 널로 업데이트하기 때문입니다.
모든 노드를 출력하는 PrintTree 함수
모든 노드를 오름차순으로 출력하는 함수입니다. 오름차순으로 출력하기 위해 중위 순회
(inorder) 방법으로 트리를 검색합니다.
실습 10-2[E] •완성 파일 chap10/BinTree.c
01 /*--- 모든 노드의 데이터를 출력 ---*/
02 void PrintTree (const BinNode *p)
03 {
04 if(p != NULL) {
05 PrintTree(p->left);
06 PrintLnMember(&p->data);
07 PrintTree(p->right);
08 }
09 }
10 (실습 10-2[F]에서 계속)
PrintTree 함수도 Add, Search 함수처럼 처음 호출할 때 매개변수 p에 루트 노드의 포인터
를 전달받습니다. 그리고 회원의 데이터 출력은 Member.c에서 정의한 PrintLnMember 함
수로 처리합니다.
6
그림 10-17을 보면서 PrintTree의 동작을 좀 더 자세히 알아보
2 7
겠습니다. 이 함수는 루트 노드 6에 대한 포인터를 매개변수 p에 1 4 8
전달받습니다. 그런 다음 p가 널 포인터인지 검사합니다. 만약 p 3 5
[그림 10-17] 이진검색트리
422 C 알고리즘