iOS/알고리즘

[iOS, Swift] DFS 전위, 중위, 후위 탐색

검은참깨두유vm 2023. 2. 12. 22:49
반응형

iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다.

 

class Node {
    var nodeData: Int?
    var lt: Node?
    var rt: Node?
    
    init(value: Int) {
        nodeData = value
        lt = nil
        rt = nil
    }
}

var tree: Node = Node(value: 1)
tree.lt = Node(value: 2)
tree.rt = Node(value: 3)
tree.lt?.lt = Node(value: 4)
tree.lt?.rt = Node(value: 5)
tree.rt?.lt = Node(value: 6)
tree.rt?.rt = Node(value: 7)

// 전위순회
func DFS_전위(root: Node?) {
    if root == nil {
        return
    } else {
        print(root!.nodeData!, terminator: " ")
        DFS_전위(root: root?.lt)
        DFS_전위(root: root?.rt)
    }
}

// 중위순회
func DFS_중위(root: Node?) {
    if root == nil {
        return
    } else {
        DFS_중위(root: root?.lt)
        print(root!.nodeData!, terminator: " ")
        DFS_중위(root: root?.rt)
    }
}

// 후위순회
func DFS_후위(root: Node?) {
    if root == nil {
        return
    } else {
        DFS_후위(root: root?.lt)
        DFS_후위(root: root?.rt)
        print(root!.nodeData!, terminator: " ")
    }
}

DFS_전위(root: tree) // 1 2 4 5 3 6 7
DFS_중위(root: tree) // 4 2 5 1 6 3 7
DFS_후위(root: tree) // 4 5 2 6 7 3 1
반응형

'iOS > 알고리즘' 카테고리의 다른 글

[Swift, 알고리즘] Swift Queue 만들기  (0) 2023.02.08