본문으로 건너뛰기
김신건의 로그

Binary Search Tree (BST): 정렬된 이진 트리

· 수정 · 📖 약 1분 · 213자/단어 #algorithm #data-structure #tree #bst
Binary Search Tree, BST, 이진 탐색 트리, binary-search-tree

정의

Binary Search Tree (BST) 는 각 노드가 다음을 만족하는 이진 트리입니다.

  • 왼쪽 서브트리의 모든 키 < 노드 키
  • 오른쪽 서브트리의 모든 키 > 노드 키

연산: 탐색, 삽입, 삭제 모두 평균 O(log N). 최악은 O(N) (편향 트리).

연산

struct Node { int key; Node *l, *r; };

Node* search(Node* r, int k) {
    if (!r || r->key == k) return r;
    return k < r->key ? search(r->l, k) : search(r->r, k);
}

Node* insert(Node* r, int k) {
    if (!r) return new Node{k, nullptr, nullptr};
    if (k < r->key) r->l = insert(r->l, k);
    else if (k > r->key) r->r = insert(r->r, k);
    return r;
}

중위 순회 (inorder) 로 방문하면 키가 정렬된 순서로 출력됩니다.

왜 균형이 필요한가

정렬된 입력을 순서대로 삽입하면 일자 트리 가 되어 O(N) 로 퇴화합니다.

균형 유지 자료구조:

  • AVL Tree: 엄격한 균형 (높이 차 <= 1)
  • Red-Black Tree: 완화된 균형 (색 기반)
  • Treap: 우선순위 무작위화
  • Splay Tree: 접근 시 회전
  • Order Statistics Tree: BST + 서브트리 크기

참고

이 글의 용어 (5개)
세그먼트 트리 (Segment Tree)algorithm
정의 세그먼트 트리 (Segment Tree) 는 배열의 구간 쿼리 (range query) 와 점 갱신 (point update) 를 모두 O(log N) 에 처리하는 이진 트…
자료구조 (Data Structures)algorithm
정의 자료구조 (Data Structure) 는 데이터를 효율적으로 저장하고 접근하기 위한 조직화 방법. 문제 풀이에서는 시간 복잡도와 공간 복잡도의 trade-off 를 정확히…
BBST (Splay Tree, Treap)algorithm
정의 BBST (Balanced Binary Search Tree) 는 균형이 amortized / expected 로 보장되는 이진 탐색 트리. PS 에서는 split / me…
Fenwick Tree (Binary Indexed Tree): 구간 합 O(log N)algorithm
정의 Fenwick Tree (또는 BIT, Binary Indexed Tree) 는 배열의 prefix sum 을 O(log N) 에 갱신·조회 하는 자료구조입니다. Peter…
Order Statistics Tree (OST): rank/select 지원 BSTalgorithm
정의 Order Statistics Tree 는 각 노드에 서브트리 크기 를 추가로 저장한 균형 BST 입니다. 두 가지 새 연산을 O(log N) 에 지원합니다. - rank(…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기