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 알고리즘
   417   418   419   420   421   422   423   424   425   426   427