본문 바로가기
알고리즘

Swift로 자료구조 구현하기 - 트리(Tree) 예제

by mr.conan 2023. 6. 22.
728x90
반응형

소개: 자료구조는 데이터를 조직화하고 효율적으로 관리하는 데 도움을 주는 도구입니다. 이번 글에서는 Swift를 사용하여 트리(Tree) 자료구조를 직접 구현하는 예제를 알아보겠습니다. 트리는 계층적인 구조를 가지며, 부모와 자식 관계로 이루어진 데이터 구조입니다.

 

1. 트리(Tree) 개념 이해하기: 트리는 계층적인 구조를 가지며, 하나의 루트 노드(root node)와 이에 연결된 여러 개의 자식 노드(child node)로 이루어져 있습니다. 각 노드는 다른 노드와 연결되어 트리를 형성합니다. 트리는 데이터의 조직화와 탐색에 많이 사용됩니다.

 

2.트리(Tree) 구현하기: 이제 Swift로 트리 자료구조를 구현해보겠습니다. 다음은 TreeNode와 Tree 클래스의 기본 형태입니다.

class TreeNode<T> {
    var value: T
    var children: [TreeNode] = []
    
    init(value: T) {
        self.value = value
    }
    
    func addChild(_ child: TreeNode) {
        children.append(child)
    }
}

class Tree<T> {
    var root: TreeNode<T>?
    
    init(rootValue: T) {
        root = TreeNode(value: rootValue)
    }
}

위 코드에서는 TreeNode와 Tree 클래스를 정의합니다. TreeNode는 트리의 각 노드를 나타내는 클래스로, 값과 자식 노드들을 가지고 있습니다. Tree 클래스는 트리 자체를 나타내는 클래스로, 루트 노드를 가지고 있습니다.

 

3.트리(Tree) 예제 사용하기: 이제 위에서 구현한 트리를 사용하는 예제를 살펴보겠습니다.

let tree = Tree<String>(rootValue: "A")

let nodeB = TreeNode(value: "B")
let nodeC = TreeNode(value: "C")
let nodeD = TreeNode(value: "D")

tree.root?.addChild(nodeB)
tree.root?.addChild(nodeC)
nodeB.addChild(nodeD)

// 트리 구조: A -> B -> D, C

 

위 예제에서는 문자열을 값으로 가지는 트리를 생성하고, addChild 메서드를 사용하여 노드들을 연결합니다. 이렇게 트리를 구성하면 A 노드의 자식으로 B와 C가 연결되고, B 노드의 자식으로 D가 연결됩니다.

 

결론: 이번 글에서는 Swift를 사용하여 트리(Tree) 자료구조를 직접 구현하는 예제를 살펴보았습니다. 트리는 계층적인 구조를 가지며, 데이터를 조직화하고 탐색하기에 유용한 자료구조입니다. 이제 구현한 트리를 기반으로 다양한 트리 알고리즘을 적용해보시기 바랍니다. Swift의 강력한 기능을 활용하여 자료구조를 직접 구현해보는 경험은 프로그래밍 실력 향상에 큰 도움이 될 것입니다.

728x90
반응형