STUDY/자료구조(Data Structures)

자료구조 •트리(Tree) -구조체 배열•

Yeonzel 2017. 12. 29. 16:37

트리(Tree) -구조체 배열

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <malloc.h>
 
typedef struct node { //노드의 데이터, 왼쪽 자식노드, 오른쪽 자식노드 (부모노드 추가 가능)
    char data;
    int left;
    int right;
}node;
 
node T[101];
int N;
 
void initTree() //트리 초기화
{
    for (int i = 0; i < 101; i++) //101개의 원소 초기화
    {
        T[i].data = 0;
        T[i].left = 0;
        T[i].right = 0;
    }
}
void inorder(int idx) // 재귀를 이용한 중위 순회
{
    if (idx == 0return;
 
    inorder(T[idx].left);
    printf("%c", T[idx].data);
    inorder(T[idx].right);
}
 
int main()
{
    for (int tc = 1; tc <= 10; tc++)
    {
        int idx = 0;
        initTree();
        scanf("%d\n"&N);
        for (int i = 0; i < N; i++) //트리 생성 -> 구조체 배열로 구현시 인덱스 중요
        {
            scanf("%d "&idx);
            scanf("%c"&(T[idx].data));
            if (idx <= N / 2)
            {
                if(idx==N/2 && N%2==0)
                    scanf(" %d\n"&(T[idx].left));
                else
                    scanf(" %d %d\n"&(T[idx].left), &(T[idx].right));
            }
            //scanf("%c %d %d\n", &(T[idx].data), &(T[idx].left), &(T[idx].right));
        }
        printf("#%d ", tc);
        inorder(1); // 1번 노드가 트리의 루트 노드
        printf("\n");
    }
    return 0;
}
cs