본문 바로가기
Computer Science

중위순회

by OKOK 2019. 1. 23.

1. node, left, right

2. node 에는 글자를 저장함

3. left, right의 인덱스는 부모이고, data는 자식의 idx 를 의미함

4. travel 하는 것을 익힘 


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
#include <stdio.h>
 
char node[10];
int left[10];
int right[10];
 
void travel(int idx)
{
    if (left[idx] != 0//  왼쪽 자식이 있으면 이동,
        travel(left[idx]);
    printf("%c", node[idx]); // 루트 출력
    if (right[idx] != 0// 오른쪽 자식이 있으면 이동
        travel(right[idx]); 
}
 
int main()
{
    freopen("input.txt""r", stdin);
    int T;
    int N;
    int num;
    int i, j;
 
    for (T = 1; T <= 10++T)
    {
        scanf("%d"&N);
        for (i = 1; i <= N; ++i)
            left[i] = right[i] = 0;
        for (i = 1; i <= N; ++i)
        {
            scanf("%d"&num);
            if (i > N / 2// vertex의 이상부터는 자식들이 없군
                scanf(" %c", node + i);
            else // vertex / 2 이하는 자식이 있음
            {
                scanf(" %c", node + i);
                scanf("%d", left + i);
                if ((i != N / 2|| (N % 2 == 1)) // 8/2 == 4 이므로 왼쪽 자식만 있음, 8/2 이하이면서 홀수면 오른쪽 자식이 항상 있음
                    scanf("%d", right + i);
            }
        }
        printf("#%d ", T);
        travel(1);
        printf("\n");
    }
    return 0;
}
cs

 


'Computer Science' 카테고리의 다른 글

비밀번호  (0) 2019.01.24
사칙연산 유효성 검사  (0) 2019.01.24
암호문 3  (0) 2019.01.23
암호문3  (0) 2019.01.22
미로1  (0) 2019.01.22

댓글