~/tech-blog/posts/algo-binary-search-tree — zsh

이진 탐색 트리

바이너리 서치의 특징

바이너리 서치 트리의 예시를 그림과 함께 설명해보겠습니다. 각 노드는 숫자 값으로 표시되며, 왼쪽 자식 노드의 값은 부모 노드의 값보다 작고, 오른쪽 자식 노드의 값은 부모 노드의 값보다 큽니다.

                8
       / \
      3   10
     / \    \
    1   6    14
       / \   /
      4   7 13

위의 그림은 다음과 같은 바이너리 서치 트리를 나타냅니다. 여기서 각 노드의 값은 그 노드의 중심값이며, 이 중심값은 트리 내에서 해당 노드를 식별하는 데 사용됩니다.

  • 루트 노드: 값 8
  • 왼쪽 서브트리: 값 3, 1, 6, 4, 7
  • 오른쪽 서브트리: 값 10, 14, 13

이제 몇 가지 작업을 시각적으로 설명해보겠습니다.

  1. 검색: 값 7을 검색한다고 가정해봅시다. 시작은 루트 노드에서부터 시작합니다. 루트 노드의 값은 8이며, 7은 8보다 작으므로 왼쪽 자식 노드로 이동합니다. 그리고 나서 6 노드로 이동하고, 7을 찾게 됩니다.
  2. 삽입: 값 5를 삽입하려고 합니다. 먼저 루트 노드부터 시작합니다. 5는 8보다 작으므로 왼쪽으로 이동합니다. 다음은 3 노드로 이동합니다. 5는 3보다 크므로 오른쪽으로 이동합니다. 하지만 6 노드가 이미 오른쪽 자식으로 있으므로 5를 6 노드의 왼쪽 자식으로 삽입합니다.
  3. 삭제: 값 3을 삭제하려고 합니다. 먼저 삭제할 노드를 찾습니다. 3은 루트 노드의 왼쪽 서브트리에 있습니다. 3 노드는 자식 노드가 하나밖에 없으므로 그 자식 노드를 부모 노드에 연결하고 3 노드를 삭제합니다.

이렇게 바이너리 서치 트리는 검색, 삽입, 삭제를 효율적으로 수행할 수 있는 자료 구조입니다. 다만, 트리의 균형을 유지하기 위해 균형 잡힌 트리 구조를 사용하는 것이 중요합니다.

댓글

GitHub 계정으로 로그인하시면 댓글과 질문을 남기실 수 있습니다. 남겨 주신 글은 이 저장소의 Discussions에 쌓입니다.

● main 214 posts UTF-8 LF © 2026 코징 RSS · GitHub