Page 411 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 411

쉽다는 점 등의 특징이 있어 폭넓게 사용됩니다. 그러면 이진검색트리 프로그램을 작성해 보

                        면서 이와 같은 특징에 대해 좀 더 자세히 살펴보겠습니다.



                        이진검색트리 만들기

                        이제 이진검색트리 프로그램을 구현해 보겠습니다. 해시법이나 선형 리스트 등의 프로그램과
                        마찬가지로 주요 부분을 헤더(실습 10-1)와 소스(실습 10-2)로 나누어 구현합니다.

                           해시법이나 선형 리스트에서 작성한 프로그램과 마찬가지로 노드에 저장하는 데이터의 자료형은 Member형입니다.


                          실습 10-1                                                •완성 파일 chap10/BinTree.h
                         01  /* 이진검색트리 프로그램(헤더) */
                         02  #ifndef ___BinTree
                         03  #define ___BinTree
                         04
                         05  #include "Member.h"  실습 11-1에서 작성
                         06
                         07  /*--- 노드 ---*/
                         08  typedef struct __bnode {
                         09    Member data;            /* 데이터 */
                         10    struct __bnode *left;     /* 왼쪽 자식 노드에 대한 포인터 */
                         11    struct __bnode *right;    /* 오른쪽 자식 노드에 대한 포인터 */
                         12  } BinNode;
                         13
                         14  /*--- 검색 ---*/
                         15  BinNode *Search(BinNode *p, const Member *x);
                         16
                         17  /*--- 노드 삽입 ---*/
                         18  BinNode *Add(BinNode *p, const Member *x);
                         19
                         20  /*--- 노드 삭제 ---*/
                         21  int Remove(BinNode **root, const Member *x);
                         22
                         23  /*--- 모든 노드를 출력 ---*/
                         24  void PrintTree(const BinNode *p);
                         25
                         26  /*--- 모든 노드를 삭제 ---*/
                         27  void FreeTree(BinNode *p);
                         28  #endif






                                                                                          10•트리  411
   406   407   408   409   410   411   412   413   414   415   416