<Algorithm> 117. 중위순회(SWExpert)
by BFine반응형
1. 중위순회(SWExpert)
재귀를 이용한 트리 기본 순회문제
오랜만에 트리문제를 풀어보니 선뜻 생각이 나지않아 당황했지만 금방 풀 수 있었다.
첫 제출할때 fail 났는데 이유가 res의 chatAt으로 했는데 테스트케이스를 보니 10자리가 넘어가는 Node가 있었다. -> Token으로 대체함
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 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution { static String res; static char[] alp; public static void main(String[] args) throws IOException { StringBuilder sb = new StringBuilder(""); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int t = 0; t<10;t++) { int N = Integer.parseInt(br.readLine()); Node[] tree = new Node[N+1]; res = ""; alp = new char[N + 1]; /****************************** * 재귀를 활용해 L Root R 순서로 탐색 후 * 출력한다. *******************************/ for (int i = 1; i < N + 1; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int idx = Integer.parseInt(st.nextToken()); alp[idx] = st.nextToken().charAt(0); tree[i] = new Node(idx); if (st.hasMoreElements()) { tree[i].left = Integer.parseInt(st.nextToken()); } if (st.hasMoreElements()) { tree[i].right = Integer.parseInt(st.nextToken()); } } int root = 1; inorder(tree, root); String result_inorder=""; StringTokenizer st = new StringTokenizer(res); while (st.hasMoreTokens()){ result_inorder += alp[Integer.parseInt(st.nextToken())]; } sb.append("#"+(t+1)+" "+result_inorder+"\n"); } System.out.println(sb.toString()); } public static void inorder(Node[] tree, int idx){ if(tree[idx].left!=0) inorder(tree,tree[idx].left); res += tree[idx].v+" "; if(tree[idx].right!=0) inorder(tree,tree[idx].right); } static class Node{ int v; int left = 0; int right = 0; public Node(int v) { this.v = v; } } } | cs |
참고 & 출처
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 119. 암호생성기(SWExpert) (0) | 2019.02.19 |
---|---|
<Algorithm> 118. 회문1(SWExpert) (0) | 2019.02.18 |
<Algorithm> 116. 보호필름(SWExpert) (0) | 2019.02.16 |
<Algorithm> 115. 14890번 경사로 (0) | 2019.02.16 |
<Algorithm> 114. 2293번 동전1 (0) | 2019.02.15 |
블로그의 정보
57개월 BackEnd
BFine