Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 코틀린
- 백트래킹
- baekjoon
- OS
- LEVEL2
- lambda
- Spring
- back-end
- 프로그래머스
- java
- kotlin
- backtracking
- 운영체제
- 스프링
- 자료구조
- algorithm
- DP
- 그래프
- TDD
- programmers
- 모던자바
- 네트워크
- 프로젝트
- DFS
- BFS
- Brute-force
- 자바
- 알고리즘
- Java8
- 백준
Archives
- Today
- Total
요깨비's LAB
[백준, Tree, Java] P.1991 트리 순회 본문
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scr = new Scanner(System.in);
int N = scr.nextInt();
Map<String, Node> nodes = new HashMap<>();
for (int i = 0; i < N; i++) {
String id = String.valueOf((char) ('A' + i));
nodes.putIfAbsent(id, new Node(id));
}
for (int i = 0; i < N; i++) {
String rootId = scr.next();
String leftNodeId = scr.next();
String rightNodeId = scr.next();
Node root = nodes.get(rootId);
Node left = null;
Node right = null;
if (!leftNodeId.equals(".")) {
left = nodes.get(leftNodeId);
}
if (!rightNodeId.equals(".")) {
right = nodes.get(rightNodeId);
}
root.left = left;
root.right = right;
}
Tree tree = new Tree(nodes.get("A"));
tree.visitPreOrder(tree.root);
System.out.println();
tree.visitInOrder(tree.root);
System.out.println();
tree.visitPostOrder(tree.root);
}
}
class Node {
String id;
Node left = null;
Node right = null;
public Node(String id) {
this.id = id;
}
public void connectLeftNode(Node left) {
this.left = left;
}
public void connectRightNode(Node right) {
this.right = right;
}
}
class Tree {
Node root;
public Tree(Node root) {
this.root = root;
}
public void visitInOrder(Node node) {
if (node != null) {
if (node.left != null) visitInOrder(node.left);
System.out.print(node.id);
if (node.right != null) visitInOrder(node.right);
}
}
public void visitPreOrder(Node node) {
if (node != null) {
System.out.print(node.id);
if (node.left != null) visitPreOrder(node.left);
if (node.right != null) visitPreOrder(node.right);
}
}
public void visitPostOrder(Node node) {
if (node != null) {
if (node.left != null) visitPostOrder(node.left);
if (node.right != null) visitPostOrder(node.right);
System.out.print(node.id);
}
}
}
'알고리즘(Java) > 그래프 이론' 카테고리의 다른 글
[백준, 그래프 이론, Java] P.1647 도시 분할 계획 (크루스칼) (0) | 2021.04.20 |
---|---|
[백준, 그래프 이론, Java] P.2188 축사 배정(이분 매칭) (0) | 2021.04.20 |
[백준, 그래프 이론, Java] P.1197 최소 스패닝 트리 (프림) (0) | 2021.04.16 |
[백준, 그래프 이론, Java] P.1197 최소 스패닝 트리 (크루스칼) (0) | 2021.04.16 |
[백준, 그래프 이론, Java] P.1922 네트워크 연결 (프림) (0) | 2021.04.16 |
Comments