백준 1991번 트리순회
2017. 1. 25. 20:29ㆍAlgorithm Solution
문제 설명 :
트리를 배열로 표현하였다. 근데 계속 런타임 에러가 나서 고생하였다. 문제는 배열의 크기였다.
트리의 높이(Level)가 N이면 최대 노드 갯수는 이다. 입력이 1<=N<=26이기 때문에 최대 Level이 26이 될 수 있다. 그러므로 만큼 배열의 크기를 만들어야한다. 이 크기를 만족 못하기 때문에 배열의 크기를 넘어서 계속 런타임 에러가 났다. 지금은 에러가 나지 않는다.
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | import java.io.*; import java.util.StringTokenizer; /** * 문제 이름 : 트리 순회 * 문제 번호 : 1991 * 문제 사이트 : https://www.acmicpc.net/problem/1991 */ class Main { char[] Tree = new char[67108863]; BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); void inOrder(int root) throws IOException { if (Tree[root] != '.' && Tree[root] != '\u0000') { inOrder(root * 2); //System.out.print(Tree[root]); bw.write(Tree[root]); inOrder((root * 2) + 1); } } void preOrder(int root) throws IOException { if (Tree[root] != '.' && Tree[root] != '\u0000') { //System.out.print(Tree[root]); bw.write(Tree[root]); preOrder(root * 2); preOrder((root * 2) + 1); } } void postOrder(int root) throws IOException { if (Tree[root] != '.' && Tree[root] != '\u0000') { postOrder(root * 2); postOrder((root * 2) + 1); //System.out.print(Tree[root]); bw.write(Tree[root]); } } void Solve() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine().trim()); Tree[1] = 'A'; int index = 0; if (N > 0) { while (N-- > 0) {//N만큼 입력 받기 StringTokenizer st = new StringTokenizer(br.readLine().trim()); char data = st.nextToken().charAt(0); for (int i = 1; i < Tree.length; i++) { if (Tree[i] == data) { index = i;//parent break; } } Tree[index * 2] = st.nextToken().charAt(0); //left Tree[(index * 2) + 1] = st.nextToken().charAt(0); //right } preOrder(1); //System.out.println(); bw.write("\n"); inOrder(1); bw.write("\n"); //System.out.println(); postOrder(1); bw.close(); } } public static void main(String[] args) throws IOException { new Main().Solve(); } } | cs |
'Algorithm Solution' 카테고리의 다른 글
Two Sum - LeetCode (0) | 2024.01.25 |
---|---|
백준 9095번 1,2,3 더하기 (0) | 2017.02.27 |
백준 10989 수 정렬하기 3 (java) (0) | 2017.01.02 |
백준 1193 분수찾기 (0) | 2016.12.16 |
숫자 팰린드롬(palindrome) (0) | 2016.12.12 |