티스토리 뷰

트리를 순회하는 방법을 


전위 순회, 루트 -> 왼쪽 -> 오른쪽

중위 순회, 왼쪽 -> 루트 -> 오른쪽

후위 순회, 왼쪽 -> 오른쪽 -> 루트


import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
* 백준 온라인 저지
* 1991
* 트리순회
*
* @author whitebeard-k
*
*/
public class Problem1991 {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int i, n = Integer.parseInt(in.readLine());
char[] data = in.readLine().replaceAll(" ", "").toCharArray();
Tree t = new Tree(data[0], data[1], data[2]);
for (i = 1; i < n; i++) {
data = in.readLine().replaceAll(" ", "").toCharArray();
t.add(data[0], data[1], data[2]);
}
t.preOrder(t.root);
System.out.println();
t.inOrder(t.root);
System.out.println();
t.postOrder(t.root);
}
}
class TreeNode {
char data;
TreeNode left;
TreeNode right;
public TreeNode(char data) {
this.data = data;
}
}
class Tree {
TreeNode root;
public Tree(char data, char left, char right) {
root = new TreeNode(data);
if (data != '.')
root = new TreeNode(data);
if (left != '.')
root.left = new TreeNode(left);
if (right != '.')
root.right = new TreeNode(right);
}
public void add(char data, char left, char right) {
next(root.left, data, left, right);
next(root.right, data, left, right);
}
public void next(TreeNode node, char data, char left, char right) {
if (node == null)
return;
if (node.data == data) {
if (left != '.')
node.left = new TreeNode(left);
if (right != '.')
node.right = new TreeNode(right);
} else {
next(node.left, data, left, right);
next(node.right, data, left, right);
}
}
// 전위 순회, 루트 -> 왼쪽 -> 오른쪽
public void preOrder(TreeNode node) {
System.out.print(node.data);
if (node.left != null)
preOrder(node.left);
if (node.right != null)
preOrder(node.right);
}
// 중위 순회, 왼쪽 -> 루트 -> 오른쪽
public void inOrder(TreeNode node) {
if (node.left != null)
inOrder(node.left);
System.out.print(node.data);
if (node.right != null)
inOrder(node.right);
}
// 후위 순회, 왼쪽 -> 오른쪽 -> 루트
public void postOrder(TreeNode node) {
if (node.left != null)
postOrder(node.left);
if (node.right != null)
postOrder(node.right);
System.out.print(node.data);
}
}





반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준][dp] 11066 파일합치기  (0) 2018.01.24
[백준][그래프] 11403 경로찾기  (0) 2018.01.24
[백준][DP] 1149 RGB 거리  (0) 2017.11.15
[백준][DP] 5721 사탕줍기 대회  (0) 2017.10.26
[백준] 1504 특정한 최단 경로  (0) 2017.10.25
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
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
글 보관함