<링크>
https://www.acmicpc.net/problem/1991
<소스코드>
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<stdio.h> #include<vector> using namespace std; pair<int, int> node[26]; void pre_order(int); void in_order(int); void post_order(int); int main() { int N; scanf("%d", &N); getchar(); for (int i = 0; i < N; ++i) { char buf[7]; fgets(buf, sizeof(buf), stdin); int cur = buf[0] - 'A'; int l = buf[2] - 'A'; int r = buf[4] - 'A'; node[cur].first = node[cur].second = -1; if (l != '.'-'A') node[cur].first = l; if (r != '.'-'A') node[cur].second = r; } pre_order(0); printf("\n"); in_order(0); printf("\n"); post_order(0); } void pre_order(int i) { if (i == -1) return; printf("%c", i + 'A'); pre_order(node[i].first); pre_order(node[i].second); } void in_order(int i) { if (i == -1) return; in_order(node[i].first); printf("%c", i + 'A'); in_order(node[i].second); } void post_order(int i) { if (i == -1) return; post_order(node[i].first); post_order(node[i].second); printf("%c", i + 'A'); } | cs |
<풀이>
pair 배열을 만들고 first는 left child, second는 right child를 나타냈다.
'알고리즘 풀이 > 기타' 카테고리의 다른 글
백준 8979 올림픽 (0) | 2018.08.29 |
---|---|
백준 2621 카드게임 (0) | 2018.08.28 |
백준 13414 수강신청 (0) | 2018.08.02 |
백준 13413 오셀로 재배치 (0) | 2018.08.01 |
백준 10973 이전 순열 (0) | 2018.07.24 |