백준 JAVA 1991번 트리 순회
문제 링크: https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
트리의 전위, 중위, 후위 탐사를 진행하는 기초 문제다.
List<Node>[] 의 배열 형태로 받아 저장한 후 루트부터 탐색을 진행하면 된다.

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; class Node{ char left; char right; public Node( char left, char right) { this.left = left; this.right = right; } } public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int n; static List<Node> []list; static StringBuilder sb= new StringBuilder(); public static void main(String args[]) throws IOException { n= Integer.parseInt(br.readLine()); list= new ArrayList[n]; for(int i=0; i<n; i++){ list[i]=new ArrayList<>(); } for(int i=0; i<n; i++){ String[] s = br.readLine().split(" "); char start = s[0].charAt(0); char left = s[1].charAt(0); char right = s[2].charAt(0); list[start-'A'].add(new Node(left,right)); } pre(0); sb.append("\n"); mid(0); sb.append("\n"); post(0); System.out.println(sb.toString()); } public static void pre(int start){ for(Node node : list[start]){ char left = node.left; char right = node.right; sb.append((char)(start+'A')); if(left!='.'){ pre(left-'A'); } if(right!='.'){ pre(right-'A'); } } } public static void mid(int start){ for(Node node: list[start]){ char left = node.left; char right = node.right; if(left!='.'){ mid(left-'A'); } sb.append((char)(start+'A')); if(right!='.'){ mid(right-'A'); } } } public static void post(int start){ for(Node node: list[start]){ char left = node.left; char right = node.right; if(left!='.'){ post(left-'A'); } if(right!='.'){ post(right-'A'); } sb.append((char)(start+'A')); } } }

'Alogorithm > Tree' 카테고리의 다른 글
백준 1717[자바] java 집합의 표현 (0) | 2022.02.11 |
---|---|
백준 14675 [자바] java 단절점과 단절선 (0) | 2022.01.18 |
백준 1647 [자바] java 도시 분할 계획 (0) | 2022.01.10 |
백준 JAVA 1992번 네트워크 연결 (0) | 2021.12.20 |
백준 JAVA 1197번 최소 스패닝 트리 (0) | 2021.12.01 |
댓글
이 글 공유하기
다른 글
-
백준 14675 [자바] java 단절점과 단절선
백준 14675 [자바] java 단절점과 단절선
2022.01.18 -
백준 1647 [자바] java 도시 분할 계획
백준 1647 [자바] java 도시 분할 계획
2022.01.10 -
백준 JAVA 1992번 네트워크 연결
백준 JAVA 1992번 네트워크 연결
2021.12.20 -
백준 JAVA 1197번 최소 스패닝 트리
백준 JAVA 1197번 최소 스패닝 트리
2021.12.01
댓글을 사용할 수 없습니다.