BST-Höhe und Baumtraversierungen
이진 탐색 트리(BST)의 높이와 순회
중요한 독일어·영어 용어는 유지하되 설명과 학습 동선은 한국어 중심으로 제공합니다.
이 챕터의 문항별 독립 학습 페이지
단원 페이지에는 개요와 학습 순서만 둡니다. 각 문항의 용어·비유·수식·단계별 풀이·실제 채점은 아래 독립 페이지에서 이어집니다.
I-4 · 1개 선택
n개의 원소를 가진 이진 탐색 트리(BST)에 대한 설명 중 맞는 것을 고르시오.
독립 개념 강의와 실제 채점 열기 →I-5 · 1개 선택
이진 탐색 트리(BST)의 원소를 오름차순으로 정렬해서 출력하는 traversal은 무엇인가?
독립 개념 강의와 실제 채점 열기 →
30초 핵심 요약
BST(이진 탐색 트리, binary search tree, binärer Suchbaum)는 모든 노드 v에서 '왼쪽 부분 트리 <= \(v.\text{key} \le \)v.key ≤또는 < 오른쪽 부분 트리' 조건을 부분 트리 전체에 대해 지키는 이진트리다. 탐색·삽입·삭제는 한 경로만 내려가므로 \(O(h)\)O(h)이고, h가 균형 잡혀 있으면 \(O(\log n)\)O(log n), 퇴화한 사슬이면 \(O(n)\)O(n)이다. 순회(traversal)는 같은 트리를 읽는 순서다. 전위는 루트가 처음, 중위는 루트가 가운데, 후위는 루트가 마지막이며, BST에서는 중위 순회만 오름차순 출력을 보장한다.
깊이 d인 층에는 노드가 최대 \(2^{d}\)2^d개 있다. 일반 BST 연산은 \(O(h)\)O(h), 가장 균형 잡힌 높이는 \(\Theta(\log n)\)Θ(log n), 퇴화한 최악 높이는 \(\Theta(n)\)Θ(n)이다. 강의의 간선 기준 규약에서는 \(h = n - 1\)h = n - 1이다.
`immer`, `jede`, 정확한 수를 뜻하는 `gleich`, 최선·최악 경우(best/worst case), 순회 이름을 보면 먼저 작은 반례와 규약을 확인한다.
시험 연결
- I-4
- I-5
섹션 I에서는 네 문장 가운데 정확히 하나(exactly one)가 옳다고 명시한다.
정답 위치를 외우는 대신 각 선택지를 BST 불변식, 층별 노드 수 상한, 높이 규약, 순회 순서로 바꾸어 독립적으로 판정한다.
기억 복원 자료(Gedächtnisprotokoll)는 재구성한 시험 문구이며 공식 정답지가 아니다. 아래 판정은 2026년 여름학기 강의와 Sheet05 자료로 대조했다.
I-4 선택지 C에 대해 강의는 간선 기준 최악 높이를 \(h = n - 1\)h = n - 1로 제시하지만, Sheet05 그룹 풀이에서는 정렬 입력의 높이를 비형식적으로 n이라 표현한다. 객관식의 의도는 최악 높이가 선형이라는 것이며, 정확한 문구 'gleich n'에는 1 차이(off-by-one)와 강의 규약의 모호성이 있다.
먼저 알아야 할 용어와 전제
- 트리 기본 용어: 루트(root/Wurzel), 노드(node/Knoten), 리프(leaf/Blatt), 자식(child/Kind), 부모(parent/Elternknoten), 부분 트리(subtree/Teilbaum)
- 깊이(depth/Tiefe)는 루트에서 시작해 아래로 갈수록 커지며, 연습문제에서도 깊이가 0부터 시작한다고 명시한다.
- BST 불변식: 왼쪽 부분 트리의 모든 키는 현재 노드 키 이하이고, 오른쪽 부분 트리의 모든 키는 중복 처리 규약에 따라 현재 노드 키 이상 또는 초과이다.
- 순회 규칙: 전위 순회\((\text{preorder}) =\)
(preorder) =루트-왼쪽-오른쪽, 중위 순회\((\text{inorder}) =\)(inorder) =왼쪽-루트-오른쪽, 후위 순회\((\text{postorder}) =\)(postorder) =왼쪽-오른쪽-루트이다. - 일반 BST 연산의 점근 실행시간은 자동으로 log n이 되는 것이 아니라 높이 h에 따라 결정된다.
개념 강의
BST는 정렬된 전화번호부의 절반을 계속 버리며 찾는 것과 비슷하다. 찾는 값이 현재 노드보다 작으면 오른쪽 부분 트리 전체를 버리고, 크면 왼쪽 부분 트리 전체를 버린다. 따라서 비용은 전체 노드 수 n을 무조건 다 보는 것이 아니라 내려간 경로 길이, 즉 높이(height) h에 묶인다.
이진 탐색 트리(Binary search tree, BST, binärer Suchbaum)는 모든 노드 z에서 왼쪽 부분 트리(Teilbaum)의 모든 x가 \(x.\text{key} \le z.\text{key}\)x.key ≤ z.key이고 오른쪽 부분 트리의 모든 y가 \(y.\text{key} \ge z.\text{key}\)y.key ≥ z.key인 이진트리다. 중위 순회(Inorder-Traversierung)는 왼쪽-루트-오른쪽 순서로 읽으며, BST 불변식 덕분에 키가 오름차순으로 나온다.
- 트리 용어: 루트(Wurzel/root), 리프(Blatt/leaf), 노드(Knoten/node), 부분 트리(Teilbaum/subtree)
- 깊이(Tiefe/depth)는 루트에서 내려간 거리이며 Sheet05에서는 0부터 시작한다.
- 높이(Höhe/height)는 루트에서 가장 깊은 리프까지의 길이이며, 강의 p.81은 간선 기준 최악의 경우 \(h = n - 1\)
h = n - 1을 사용한다. - 전위·중위·후위 순회(preorder, inorder, postorder)는 트리를 바꾸는 연산이 아니라 방문 순서다.
핵심 불변식은 바로 아래 자식 하나만 비교하는 것이 아니라 부분 트리 전체에 적용되는 순서 조건이다. 깊이 d인 이진트리 층에는 최대 \(2^{d}\)2^d개의 노드가 있으므로 `weniger als \(2^{d}\)2^d`는 엄격 부등식(strict inequality)을 사용했다는 점에서 틀린다.
일반 BST의 탐색·삽입·삭제는 \(O(h)\)O(h)이다. 완전하거나 균형 잡힌 모양의 BST는 \(h = \Theta(\log n)\)h = Θ(log n)이므로 연산도 \(O(\log n)\)O(log n)이다. 정렬된 삽입 순서는 \(h = \Theta(n)\)h = Θ(n)인 퇴화 선형 목록을 만들 수 있으므로 연산이 \(O(n)\)O(n)이 될 수 있다. 모든 노드 순회는 \(\Theta(n)\)Θ(n) 시간이며, 재귀 구현에서는 \(O(h)\)O(h)의 재귀 스택을 사용한다.
노드 하나인 트리는 루트 깊이가 0이고, 간선 기준 높이 규약에서는 높이도 0이다. 한 트리의 리프가 서로 다른 깊이에 있을 수 있지만 `모든 층에 리프가 있다(leaves on every level)`는 문구는 모호하다. 층 0이 리프인 경우는 노드가 하나뿐일 때뿐이기 때문이다. 중위 순회의 정렬성은 트리가 BST라는 전제를 필요로 하며, 임의의 이진트리는 중위 순회가 정렬된다고 보장하지 않는다.
- genau eine
- immer
- weniger als
- gleich n
- best case
- worst case
- aufsteigend sortiert
- Preorder
- Inorder
- Postorder
- Höhe versus Tiefe
BST 순회·높이 실험실
다음 상태를 먼저 예측한 뒤 한 단계 실행하여 확인하세요.
새 문장 판별 체크리스트
- 먼저 섹션 규칙을 표시한다. I-4와 I-5는 정답이 정확히 하나\((\text{exactly}_{\text{one}})\)
(exactly(one))이다. - BST 문장이 부분 트리 전체의 불변식(subtree-wide invariant)을 말하는지, 단순한 이진트리 모양을 말하는지 분리한다.
- 층·깊이 문장에서는 최댓값 \(2^{d}\)
2^d와 엄격 부등식\((<\)(<와 <=)을 확인한다. - 높이 문장이 정확한 규약인지 점근 명제인지 분리한다. 강의의 간선 기준 높이는 최악의 경우 \(h = n - 1\)
h = n - 1이며, 중요한 결론은 \(\Theta(n)\)Θ(n)이 가능하다는 점이다. - 순회 문장은 루트의 위치로 외운다. 전위는 루트가 처음, 중위는 가운데, 후위는 마지막이다.
- 정렬 출력(sorted output)은 순회 이름만으로 생기는 것이 아니라 BST 불변식과 중위 순회가 함께 있을 때 생긴다.
- 거짓 선택지는 작은 트리로 깨뜨린다. 노드 하나, 완전 트리, 오른쪽 사슬, 루트 2와 자식 1·3을 사용한다.
능동 회상
- BST 불변식을 독일어·영어 원어와 함께 한 문장으로 말해 보라. — 이진 탐색 트리(binary search tree, BST, binärer Suchbaum)는 모든 노드 v에서 왼쪽 부분 트리(Teilbaum)의 모든 키가 v.key 이하이고 오른쪽 부분 트리의 모든 키가 v.key 이상인 이진트리다.
- 전위·중위·후위 순회(preorder, inorder, postorder)의 방문 순서를 루트 위치로 설명하라. — 전위 순회는 루트-왼쪽-오른쪽이므로 루트가 처음, 중위 순회는 왼쪽-루트-오른쪽이므로 루트가 가운데, 후위 순회는 왼쪽-오른쪽-루트이므로 루트가 마지막이다.
- 왜 BST의 중위 순회(inorder traversal)가 정렬된 출력을 주는가? — 왼쪽 부분 트리의 모든 키가 루트 이하이고 오른쪽 부분 트리의 모든 키가 루트 이상이므로, 왼쪽-루트-오른쪽 순서로 재귀적으로 읽으면 오름차순이 된다.
- 일반 BST 탐색이 항상 \(O(\log n)\)
O(log n)이 아닌 이유를 최소 반례로 설명하라. — 1,2,3,4처럼 정렬된 순서로 삽입하면 오른쪽 사슬이 되어 \(h = \Theta(n)\)h = Θ(n)이므로 탐색은 \(O(h) = O(n)\)O(h) = O(n)이 될 수 있다. - 깊이 d인 층의 노드 수에 대해 `weniger als \(2^{d}\)
2^d`가 왜 틀렸는가? — 깊이 d에는 최대 \(2^{d}\)2^d개가 가능하고 가득 찬 층(full level)에서는 정확히 \(2^{d}\)2^d개가 된다. 따라서 올바른 표현은 `höchstens \(2^{d}\)2^d`이다.
구두시험 질문
- I-5를 구두시험처럼 풀어 보라. 전위·후위·중위 순회(preorder, postorder, inorder)가 각각 왜 맞거나 틀린지 한 문장씩 말하라.
- I-4 선택지 C의 `gleich n`을 엄밀하게 검토하라. 어떤 규약에서 무엇이 문제가 되는가?
- 탐색 경로의 유효성을 조상 경계(ancestor bounds)로 검사하는 방법을 설명하라.
시험 직전 요약
BST는 부분 트리 전체의 순서 불변식을 지킨다. BST의 중위 순회(왼쪽-루트-오른쪽)는 정렬되지만, 전위·후위 순회는 일반적으로 정렬되지 않는다.
깊이 d에는 노드가 최대 \(2^{d}\)2^d개 있다. 탐색·삽입·삭제는 \(O(h)\)O(h)이다. 균형 높이는 \(\Theta(\log n)\)Θ(log n), 퇴화 높이는 \(\Theta(n)\)Θ(n)이며 강의의 정확한 최악 높이는 \(h = n - 1\)h = n - 1이다.
노드 하나와 완전 트리 예제로 리프·층 문구를 검사하고, 오른쪽 사슬로 최악 높이를 검사한다. 루트 2와 자식 1·3으로 순회 함정을 잡는다.
모든 객관식 보기에서 수량 표현을 해석하고 규약을 확인한 뒤 가장 작은 트리를 그린다. 해당하면 \(O(h)\)O(h) 또는 중위 순회를 근거로 든다.
출처
- 출처 파일: AuD Gedächtnisprotokoll SoSe 2025.md; 근거 페이지·구간: Multiple Choice section I.4-I.5; data/aud_chunks.jsonl line 1; 뒷받침하는 내용: SoSe 2025 복기 자료의 문언, I부의 정확히 한 개 선택 규칙, I-4·I-5의 문제 문장과 네 선택지를 확인한다.; 검증 상태: reconstructed; 자료의 역할: reconstructed_exam; 추출 품질: \(\text{clean}_{\text{text}}\)
clean(text) - 출처 파일: Vorlesung\03BasicDataStructures.pdf; 근거 페이지·구간: pp. 66-71; 뒷받침하는 내용: 현재 강의는 이진 탐색 트리(BST)의 순서 조건을 왼쪽·오른쪽 부분 트리 전체에 대해 정의하고, 탐색과 삽입을 높이 h에 의존하는 \(O(h)\)
O(h)연산으로 제시한다.; 검증 상태: verified; 자료의 역할: current_lecture; 추출 품질: \(\text{clean}_{\text{text}}\)clean(text) - 출처 파일: Vorlesung\03BasicDataStructures.pdf; 근거 페이지·구간: pp. 80-81; 뒷받침하는 내용: 현재 강의는 BST 연산 비용 \(O(h)\)
O(h), 최선의 완전 트리 높이 \(O(\log_{2} n),\)O(log₂ n),퇴화한 최악의 높이 \(h = n - 1\)h = n - 1을 제시한다.; 검증 상태: verified; 자료의 역할: current_lecture; 추출 품질: \(\text{visual}_{\text{check}}\)visual(check) - 출처 파일: Übung\AuD26_Sheet05.pdf; 근거 페이지·구간: pp. 1-5; 뒷받침하는 내용: 공식 연습문제는 이진트리 용어와 깊이, BST 삽입, 중위·전위·후위 순회, 탐색 경로, 중위 순회를 이용한 최선·최악 실행시간 분석을 묻는다.; 검증 상태: verified; 자료의 역할: exercise_sheet; 추출 품질: \(\text{clean}_{\text{text}}\)
clean(text) - 출처 파일: Übung\AuD26_Sheet05-GrpSol.pdf; 근거 페이지·구간: pp. 5-13; 뒷받침하는 내용: 공식 그룹 해설은 루트·리프·부모·자식·깊이를 정의하고 Sheet05의 BST 삽입 예시를 제시하며, 그 트리의 중위 순회가 정렬됨을 확인한다.; 검증 상태: verified; 자료의 역할: official_solution; 추출 품질: \(\text{visual}_{\text{check}}\)
visual(check) - 출처 파일: Übung\AuD26_Sheet05-Sol.pdf; 근거 페이지·구간: pp. 18-21; 뒷받침하는 내용: 공식 해설은 이진트리 순회, BST 삽입, 회전, 정렬 뒤 균형 BST 만들기를 연습하고 중위 순회를 이용해 정렬 하한을 논증한다.; 검증 상태: verified; 자료의 역할: official_solution; 추출 품질: \(\text{clean}_{\text{text}}\)
clean(text)
AI 후속 학습 프롬프트
마지막 생성: 2026-08-03 03:24