1/**//*
2 이진 탐색 트리(Tree) : 배열 사용
3*/
4#include <stdio.h>
5#include <string.h>
6
7#define nil -1 //아무것도 가리키지 않는 포인터
8#define MaxSize 10
9
10struct Node
11...{
12 int PrevNode; //왼쪽 부분 트리를 가리키는 포인터
13 char Name[25]; //이름 저장
14 int NextNode; //오른쪽 부분 트리를 가리키는 포인터
15};
16
17void main(void)
18...{
19 struct Node tree[MaxSize] =
20 ...{
21 ...{1, "mm", 2},
22 ...{3, "cc", 4},
23 ...{5, "rr", nil},
24 ...{nil, "aa", nil},
25 ...{6, "ee", 7},
26 ...{nil, "nn", nil},
27 ...{nil, "dd", nil},
28 ...{nil, "ll", nil}
29 };
30
31 char key[20];
32 int current;
33
34 printf("찾을 내용(aa~zz) : ");
35 scanf("%s", key);
36 current = 0;
37 while (current != nil)
38 ...{
39 if (strcmp(key, tree[current].Name) == 0)
40 ...{
41 printf("찾았습니다.\n");
42 break;
43 }
44 else if (strcmp(key, tree[current].Name) < 0)
45 ...{
46 current = tree[current].PrevNode; //왼쪽 부분 트리로 이동
47 }
48 else
49 ...{
50 current = tree[current].NextNode; //오른쪽 부분 트리로 이동
51 }
52 }
53}
54/**//*
55찾을 내용(aa~hh) : aa
56찾았습니다.
57Press any key to continue
58*/