[SWEA] 중위순회 Posted on 2020-02-25 | In Problem_Solving | 문제 보러가기 제한사항 이외의 제한사항은 없다. 첫번째 생각 중위순회 함수(Inorder)를 재귀를 사용하여 작성해준 뒤, 재귀 안에서 출력을 해준다. 순서를 조금만 바꿔주면 prefix와 postfix도 구현이 가능하다. JAVA Code 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Solution { static Node[] node; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int tc=1;tc<=10;tc++) { int N = Integer.parseInt(br.readLine()); node = new Node[N+1]; for(int i=1; i<N+1; i++) { String[] s = br.readLine().split(" "); if(s.length==2) { node[i] = new Node(Integer.parseInt(s[0]),s[1],0,0); } else if (s.length==3) { node[i] = new Node(Integer.parseInt(s[0]),s[1],Integer.parseInt(s[2]),0); } else { node[i] = new Node(Integer.parseInt(s[0]),s[1],Integer.parseInt(s[2]),Integer.parseInt(s[3])); } } System.out.print("#"+tc+" "); Inorder(1); System.out.println(); } } public static void Inorder(int index) { if(node[index].Data!=null) { if(node[index].left!=0) Inorder(node[index].left); System.out.print(node[index].Data); if(node[index].right!=0) Inorder(node[index].right); } } public static class Node { int num; String Data; int left; int right; Node(int num,String Data, int left, int right) { this.num = num; this.Data = Data; this.left = left; this.right = right; } } }