# 풀이
- 알파벳 순으로 노드가 배치됨
- 딕셔너리 키값이 루트노드가 되고 길이 2짜리 배열이 각각 left, right에 해당함
- 트리 순회시
.
을 조회중이면 리턴하도록 코드 작성
import Foundation
let N = Int(readLine()!)!
var nodes: [String: [String]] = [:]
for _ in 0..<N {
let input = readLine()!.split(separator: " ").map { String($0) }
let root = input[0]
let sub = Array(input[1...2])
nodes[root] = sub
}
func preorder(_ current: String) {
if current == "." { return }
print(current, terminator: "")
guard let left = nodes[current]?[0],
let right = nodes[current]?[1] else {
return
}
preorder(left)
preorder(right)
}
func inorder(_ key: String) {
if key == "." { return }
guard let left = nodes[key]?[0],
let right = nodes[key]?[1] else { return }
inorder(left)
print(key, terminator: "")
inorder(right)
}
func postorder(_ key: String) {
if key == "." { return }
guard let left = nodes[key]?[0],
let right = nodes[key]?[1] else { return }
postorder(left)
postorder(right)
print(key, terminator: "")
}
preorder("A")
print()
inorder("A")
print()
postorder("A")