[java 백준] 1991번 트리 순회 (++추가)

[java 백준] 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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static class Node { char ch; Node right; Node left; public Node( char ch) { this .ch = ch; } } static int N; static Node[] arr; static StringBuilder sb = new StringBuilder(); public static void main( String [] args) throws IOException { BufferedReader br = new BufferedReader( new InputStreamReader( System . in )); N = Integer. parseInt (br.readLine()); arr = new Node[N + 1 ]; for ( int i = 0 ; i < N; i + + ) { arr[i] = new Node(( char ) (i + 'A' )); // arr[0]='A'로 채워짐. } for ( int i = 0 ; i < N; i + + ) { String s = br.readLine(); int N = s. charAt ( 0 ) - 'A' ; int L = s. charAt ( 2 ) - 'A' ; int R = s. charAt ( 4 ) - 'A' ; if (L ! = - 19 ) { arr[N].left = arr[L]; // N이 1일 경우 L은 3이고, R은 .(-19) 그러면 arr[1].right은 공백 } if (R ! = - 19 ) { arr[N].right = arr[R]; } } preOrder(arr[ 0 ]); sb.append( '

' ); inOrder(arr[ 0 ]); sb.append( '

' ); postOrder(arr[ 0 ]); sb.append( '

' ); System . out . println (sb. toString ()); } public static void preOrder(Node node) { sb.append(node.ch); if (node.left ! = null ) { // 예를 들어 arr[1].right은 공백이기에 이런 경우 지나갈 수 있음 preOrder(node.left); } if (node.right ! = null ) { preOrder(node.right); } } public static void inOrder(Node node) { if (node.left ! = null ) { inOrder(node.left); } sb.append(node.ch); if (node.right ! = null ) { inOrder(node.right); } } public static void postOrder(Node node) { if (node.left ! = null ) postOrder(node.left); if (node.right ! = null ) { postOrder(node.right); } sb.append(node.ch); } } Colored by Color Scripter

from http://we1cometomeanings.tistory.com/181 by ccl(A) rewrite - 2021-11-09 20:27:27