→ 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")