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