topic난이도 · 약 25

트리 · 이진트리 · BST · 힙 — 계층적 자료구조

DOM·파일시스템·React 재조정도 트리. BST는 정렬 + O(log n) 탐색, 힙은 우선순위 큐.

#트리#BST##우선순위큐#순회
왜 배우는가

React DOM 재조정, DB B-Tree 인덱스(ch22-3), 디렉토리 구조, 조직도, JSON 자체 — 전부 트리다. 트리의 3가지 순회(전위·중위·후위)와 힙 우선순위 큐를 알면 AI 코드 이해도가 급상승.

트리는 루트(root)에서 시작해 자식(children)으로 가지치기하는 계층 구조. 사이클 없음. 용어: 루트·잎(leaf)·부모·자식·깊이(depth)·높이(height)·서브트리.

트리 — 루트 1개, 각 노드는 여러 자식. DOM·파일시스템·JSON이 모두 트리

이진트리(Binary Tree)는 자식이 최대 2개. 이진탐색트리(BST, Binary Search Tree)는 "왼쪽은 더 작은 값, 오른쪽은 더 큰 값" 규칙이 추가 → 탐색·삽입·삭제 평균 O(log n). 단 편향되면 O(n)이 되므로 현대에는 자가 균형 트리(AVL·Red-Black·B-Tree)가 실무 표준.

javascript
// 이진트리 순회 3종 (재귀)
function traverse(node) {
  if (!node) return;

  // 전위(pre-order): 루트 → 좌 → 우  (복사·직렬화)
  visit(node);
  traverse(node.left);
  traverse(node.right);

  // 중위(in-order): 좌 → 루트 → 우  (BST면 정렬 순서)
  // 후위(post-order): 좌 → 우 → 루트  (삭제·의존성 역순)
}

// 실전 용도
// - 전위: JSON 직렬화, 파일 복사
// - 중위: BST 정렬 순회, DB 인덱스 범위 조회
// - 후위: 폴더 삭제 (자식 먼저), 수식 후위표기법

// 레벨 순회(BFS) = 큐 사용 (ch17-4)

"수식 계산기" · "디렉토리 삭제" 같은 문제를 풀 때 어느 순회가 맞는지 직관이 잡힌다.

힙(Heap)은 "가장 큰(또는 작은) 값을 빨리 꺼내기"에 최적화된 이진트리. 최대 힙은 부모 ≥ 자식, 최소 힙은 반대. push O(log n), peek/pop O(log n). 구현은 배열로(부모 i, 자식 2i+1, 2i+2).

연산정렬된 배열
최댓값 꺼내기O(1) 보기 / O(n) 유지O(log n)
삽입O(n)O(log n)
k번째 큰 값O(k log n)O(n + k log n)
쓰는 곳우선순위 큐, top-k, Dijkstra

Dijkstra 최단경로, A* 탐색, 작업 스케줄러, 실시간 top-k 랭킹 — 모두 힙이 핵심.

React 내부도 트리. Virtual DOM은 트리고, 재조정(Reconciliation)이 두 트리를 비교한다. DB B-Tree 인덱스(ch22-3)·파일시스템·JSON도 트리. 이 한 가지 자료구조가 바이브코더 주변 기술의 절반을 설명한다.

실기 드릴 2문항
edit실기 드릴 · 단답형

BST에서 정렬된 순서로 모든 노드를 방문하는 순회 방식은?

edit실기 드릴 · 단답형

우선순위 큐의 전형적 내부 자료구조는?