https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자
www.acmicpc.net
[난이도] Silver1
[유형] 트리
[풀이]
Preorder, Inorder, Postorder 순회를 구현할 수 있는지를 묻는 문제입니다.
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*
var N = 0
var a = Array<Pair<Int,Int>>(26){Pair(0,0)}
fun preorder(n:Int){
if(n==-1) return
print('A'+n)
preorder(a[n].first)
preorder(a[n].second)
}
fun inorder(n:Int){
if(n==-1) return
inorder(a[n].first)
print('A'+n)
inorder(a[n].second)
}
fun postorder(n:Int){
if(n==-1) return
postorder(a[n].first)
postorder(a[n].second)
print('A'+n)
}
fun main() = with(BufferedReader(InputStreamReader(System.`in`))){
N = readLine().toInt()
repeat(N){
val carr = readLine().split(' ').map{it[0]}
var left = if(carr[1]=='.') -1 else carr[1]-'A'
var right = if(carr[2]=='.') -1 else carr[2]-'A'
a[carr[0]-'A'] = Pair(left,right)
}
preorder(0)
println()
inorder(0)
println()
postorder(0)
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver1/1991.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Silver1] 11660 : 구간 합 구하기5 (Kotlin) (0) | 2021.08.15 |
---|---|
[BOJ/백준][Silver2] 2407 : 조합 (Kotlin) (0) | 2021.08.15 |
[BOJ/백준][Silver3] 15652 : N과 M (4) (Kotlin) (0) | 2021.08.06 |
[BOJ/백준][Silver3] 15650 : N과 M (2) (Kotlin) (0) | 2021.08.06 |
[BOJ/백준][Silver2] 11279 : 최대 힙 (Kotlin) (0) | 2021.08.06 |