본문 바로가기

Development

이진 탐색 트리(Binary Search Tree) 이해와 C# 예제 코드

안녕하세요! 오늘의 기술 면접 지식은 이진 탐색 트리(Binary Search Tree, BST)에 관한 것입니다. 이 포스팅에서는 이진 탐색 트리의 개념과 기본 연산, 그리고 C#을 사용한 구현 예시에 대해 알아봅니다.

이진 탐색 트리 개념

이진 탐색 트리(BST)는 각 노드가 최대 두 개의 자식 노드를 가지는 이진 트리 자료 구조입니다. BST의 모든 노드는 다음 조건을 만족합니다.

  • 왼쪽 서브트리의 모든 노드의 값은 현재 노드의 값보다 작습니다.
  • 오른쪽 서브트리의 모든 노드의 값은 현재 노드의 값보다 큽니다.

이진 탐색 트리는 효율적인 검색, 삽입, 삭제 연산을 수행할 수 있습니다.

C#을 사용한 이진 탐색 트리 구현 예시

using System;

public class BinarySearchTree
{
    public class Node
    {
        public int Value;
        public Node Left;
        public Node Right;

        public Node(int value)
        {
            Value = value;
            Left = null;
            Right = null;
        }
    }

    public Node Root;

    public BinarySearchTree()
    {
        Root = null;
    }

    public void Insert(int value)
    {
        Root = InsertRecursively(Root, value);
    }

    private Node InsertRecursively(Node node, int value)
    {
        if (node == null)
        {
            node = new Node(value);
            return node;
        }

        if (value < node.Value)
        {
            node.Left = InsertRecursively(node.Left, value);
        }
        else if (value > node.Value)
        {
            node.Right = InsertRecursively(node.Right, value);
        }

        return node;
    }
}

 

위의 코드는 C#을 사용하여 이진 탐색 트리를 구현한 예시입니다. 이진 탐색 트리 클래스는 노드와 기본 연산을 관리합니다. 노드 삽입을 위해 재귀를 사용한 InsertRecursively 메서드가 구현되어 있습니다.

 

이진 탐색 트리에 값을 삽입하는 예시:

 

BinarySearchTree bst = new BinarySearchTree();

bst.Insert(50);
bst.Insert(30);
bst.Insert(20);
bst.Insert(40);
bst.Insert(70);
bst.Insert(60);
bst.Insert(80);

 

이상으로 이진 탐색 트리의 기본 개념과 C#을 사용한 구현 예시를 살펴봤습니다. 이진 탐색 트리는 검색, 삽입, 삭제 연산이 빠른 자료 구조로, 데이터베이스, 파일 시스템 등에서 사용되는 인덱싱 기법의 기초를 이룹니다.

 

다음 포스팅에서는 이진 탐색 트리의 검색, 삭제, 순회 등의 추가 연산에 대해 알아보겠습니다. 기술 면접 준비에 도움이 되길 바라며, 다음 포스팅에서 뵙겠습니다!