→ Problems
[Algorithm] 백준 - 1991번 트리순회 (Swift)
Swift librarian
2024. 5. 25. 16:04
문제 소개

문제 풀이
Dictionary 자료구조를 사용하여 트리구조를 만들었다. print의 위치를 조절하여 트리 순회를 구현했다.
import Foundation
let n = Int(readLine()!)!
var tree = [String: (root: String, left: String, right: String)]()
for _ in 0..<n {
let info = readLine()!.split(separator: " ").map { String($0) }
let (root, left, right) = (info[0], info[1], info[2])
tree[root] = (root, left, right)
}
func preorder(_ node: String) {
guard let node = tree[node] else { return }
print(node.root, terminator: "")
if node.left != "." {
preorder(node.left)
}
if node.right != "." {
preorder(node.right)
}
}
func inorder(_ node: String) {
guard let node = tree[node] else { return }
if node.left != "." {
inorder(node.left)
}
print(node.root, terminator: "")
if node.right != "." {
inorder(node.right)
}
}
func postorder(_ node: String) {
guard let node = tree[node] else { return }
if node.left != "." {
postorder(node.left)
}
if node.right != "." {
postorder(node.right)
}
print(node.root, terminator: "")
}
preorder("A")
print(" ")
inorder("A")
print(" ")
postorder("A")