Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

혼종 꼬지마루

[백준] 9934 - 완전 이진 트리 본문

Algorithms/TRIE

[백준] 9934 - 완전 이진 트리

꼬지마루 2018. 8. 26. 13:50

블로그 시작하고 첫 포스팅...

 

요즘 TRIE에 빠져서 문제를 찾아서 풀어보는중에 좀 쉬운문제를 만났습니다 ㅎㅎ

 

이진트리를 구현하는거라 TRIE라고 하기도 뭐하고, 그냥 이분탐색과 재귀로 할 수 있는 문제지만

 

연습을 위해 트리를 구현해서 풀어보았습니다.

 

그냥 트리를 구현하면서, 각각 깊이에 도착할 때, 선언한 2차원 배열에 차례대로 각 깊이에 대한 숫자를 입력해놀고

 

탐색이 끝나면 출력하면 끝!

 

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
#include <iostream>
#include <malloc.h>
#include <cmath>
#define MX 1030
using namespace std;
 
typedef struct NODE {
    int d, num;
    int end;
    NODE *L;
    NODE *R;
}node;
 
NODE *makenewnode()
{
    node*tmp = (node*)malloc(sizeof(node));
    tmp->= 0;
    tmp->end = 0;
    tmp->num = 0;
    tmp->= NULL;
    tmp->= NULL;
    return tmp;
}
 
int arr[MX], dab[12][MX];
int K;
 
void insert(node *root, int d, int l, int m, int r)
{
    node*tmp = root;
    if (d == K) { tmp->end = 1return; }
    tmp->= d;
    tmp->num = arr[m];
    dab[d][++dab[d][0]] = tmp->num;
    tmp->= makenewnode();
    tmp->= makenewnode();
    insert(tmp->L, d + 1, l, (l + m - 1/ 2, m - 1);
    insert(tmp->R, d + 1, m + 1, (m + + r) / 2, r);
}
 
int main(void)
{
    cin >> K;
    for (int i = 0; i < pow(2, K) - 1; i++)
        cin >> arr[i];
    node *root = makenewnode();
    insert(root, 00, (+ pow(2,K)-2)/2, pow(2, K) - 2);
    for (int i = 0; i < K; i++)
    {
        for (int j = 1; j <= dab[i][0]; j++)
            cout << dab[i][j] << " ";
        cout << endl;
    }
    return 0;
}
cs

'Algorithms > TRIE' 카테고리의 다른 글

[백준] 1764 - 듣보잡  (0) 2019.06.02
[SWEA] 1257 - K번째 문자열  (0) 2018.11.11
[SWEA] 1256 - K번째 접미어  (0) 2018.11.11
[SWEA] 3135 - 홍준이의 사전놀이  (0) 2018.09.03
[백준] 5052 - 전화번호 목록  (0) 2018.08.26