반응형
https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파...
www.acmicpc.net
import java.io.*;
public class Main {
static class Node{
char value;
Node left;
Node right;
Node(char value, Node left, Node right){
this.value = value;
this.left = left;
this.right = right;
}
}//class Node
static int N;
static Node head = new Node('A',null,null);
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine()); //노드의 개수
for(int i=0;i<N;i++) {
String [] str = br.readLine().split(" ");
char root = str[0].charAt(0);
char left = str[1].charAt(0);
char right = str[2].charAt(0);
insertNode(head,root,left,right);
}
preOrder(head);
System.out.println();
inOrder(head);
System.out.println();
postOrder(head);
}// main()
static void insertNode(Node tmp, char root,char left, char right) {
//루트노드(A)인가?
if(tmp.value==root) {
//자식노드가 . 이면 null이고 아니면 새로운 노트 만들어준다.
tmp.left=(left=='.'? null:new Node(left,null,null));
tmp.right=(right=='.'? null:new Node(right,null,null));
}
else {
if(tmp.left != null) insertNode(tmp.left, root, left, right);
if(tmp.right != null) insertNode(tmp.right, root, left, right);
}
}//insertNode()
static void preOrder(Node n) {
if(n==null) return;
System.out.print(n.value);
preOrder(n.left);
preOrder(n.right);
}//preOrder()
static void inOrder(Node n) {
if(n==null) return;
inOrder(n.left);
System.out.print(n.value);
inOrder(n.right);
}//inOrder()
static void postOrder(Node n) {
if(n==null) return;
postOrder(n.left);
postOrder(n.right);
System.out.print(n.value);
}//postOrder()
}// class Main
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 2468 : 안전영역 (0) | 2023.02.08 |
---|---|
[Java] 백준 11052 : 카드 구매하기 (0) | 2023.02.08 |
[Java] 백준 14888 : 연산자 끼워넣기 (0) | 2023.02.07 |
[Java] 백준 10844 : 쉬운 계단 수 (0) | 2023.02.04 |
[Java] 백준 11729 : 하노이 탑 이동 순서 (0) | 2023.02.04 |
댓글