백준 JAVA 1991번 트리 순회
문제 링크: https://www.acmicpc.net/problem/1991
트리의 전위, 중위, 후위 탐사를 진행하는 기초 문제다.
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