기록은 기억을 이기고 시간보다 오래 남는다.

Computer Science/Data Structure

이진 트리: 특징, 응용 with JS

준_준 2024. 5. 8. 17:17

 

 

 

이진 트리는 효율적인 데이터 관리와 알고리즘 구현을 위한 필수 자료구조 중 하나입니다.

이 글에서는 이진 트리의 기본 구조, 특징, 그리고 자바스크립트를 사용한 구현 방법에 대해 자세히 살펴보겠습니다.


이진 트리의 기본 구조

이진 트리는 각 정점(node)이 최대 두 개의 자식을 가질 수 있는 트리 구조입니다. 이러한 구조는 다양한 형태의 이진 트리가 있으며, 그 중 가장 일반적인 형태는 다음과 같습니다:

  • 포화 이진 트리(Full Binary Tree): 모든 레벨의 노드가 완전히 채워진 트리.
  • 완전 이진 트리(Complete Binary Tree): 마지막 레벨을 제외한 모든 레벨이 완전히 채워져 있고, 마지막 레벨은 왼쪽부터 차례대로 채워진 트리.
  • 편향 이진 트리(Skewed Binary Tree): 모든 노드가 왼쪽 자식 또는 오른쪽 자식만을 가진 트리.

이진 트리의 주요 특징

  • 유일 경로: 루트에서 특정 정점으로 가는 경로는 유일합니다.
  • 간선의 수: 정점이 N개인 트리는 항상 N-1개의 간선을 가집니다.
  • 효율적인 탐색과 관리: 이진 트리는 데이터의 효율적인 탐색과 관리를 가능하게 합니다.

이진 트리의 응용

이진 트리는 다음과 같은 다양한 자료구조의 기반이 됩니다:

  • 이진 탐색 트리(Binary Search Tree, BST): 각 노드의 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 큽니다.
  • 힙(Heap): 최대 힙 또는 최소 힙을 통해 우선순위 큐 구현에 사용됩니다.
  • AVL 트리와 레드-블랙 트리: 자가 균형을 맞추는 이진 탐색 트리로, 탐색, 삽입, 삭제를 빠르게 수행할 수 있습니다.

자바스크립트에서 이진 트리 구현

자바스크립트에서 이진 트리를 구현할 때는 주로 객체를 사용합니다. 각 노드는 값과 두 개의 자식 노드를 참조하는 속성을 가집니다. 다음은 간단한 이진 트리 구현 예시입니다:

class TreeNode {
    constructor(value) {
        this.value = value;
        this.left = null;
        this.right = null;
    }
}

class BinaryTree {
    constructor() {
        this.root = null;
    }

    // 이진 트리에 값을 추가하는 메소드 등
}

let tree = new BinaryTree();
tree.root = new TreeNode(10);
tree.root.left = new TreeNode(5);
tree.root.right = new TreeNode(15);
반응형