AVL 트리 삭제: 높이 갱신과 연속 균형 복구
AVL 삭제를 BST의 세 가지 삭제에서 시작해 높이 갱신과 조상 회전으로 연결합니다. 자식 균형 계수 0, 후계자 경로와 빈 트리까지 확인합니다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
웹사이트 제작·운영과 개인 서비스, 자동화·AI 도구를 만들며 배운 내용과 문제 해결 과정을 정리합니다.
AVL 삭제를 BST의 세 가지 삭제에서 시작해 높이 갱신과 조상 회전으로 연결합니다. 자식 균형 계수 0, 후계자 경로와 빈 트리까지 확인합니다.
배열을 아래에서 위로 최대 힙으로 만들고 루트를 정렬 구간 끝으로 옮깁니다. 별도 힙에 push·pop하는 방식과 구분해 같은 배열 안에서 heapify와 정렬을 수행합니다.
선택 집합을 가로지르는 최소 간선으로 신장 트리를 키웁니다. 다익스트라의 누적 거리와 구분하고, 연결되지 않은 입력은 최소 신장 숲으로 명시해 반환합니다.
겹치지 않는 일정의 개수를 최대로 만드는 종료 시각 우선 탐욕법을 배웁니다. 맞닿은 구간의 처리와 교환 논증을 작은 일정표로 확인합니다.
큰 동전부터 고르는 과정을 몫과 나머지로 추적합니다. 동전 1·3·4로 6을 만들 때의 반례를 통해 실행 가능성과 최소 개수를 구분합니다.
같은 그래프를 DFS와 BFS로 탐색하며 방문 순서와 거리의 차이를 비교합니다. BFS에서 큐에 넣을 때 방문을 기록해야 하는 이유도 확인합니다.
인접 리스트와 visited의 역할을 분리하고, 작은 순환 그래프에서 DFS의 호출·복귀 순서를 따라갑니다. 한 시작점으로 방문할 수 없는 정점도 구분합니다.
피보나치의 작은 답을 먼저 채우면 재귀 호출 없이 다음 답을 계산할 수 있습니다. 계산 순서를 확인하고 두 변수만 남길 수 있는 조건을 배웁니다.
이미 계산한 작은 문제의 답을 보관하면 같은 재귀를 다시 풀지 않아도 됩니다. 피보나치 호출을 따라가며 상태, 저장 시점, 시간과 스택 비용을 배웁니다.
첫 값을 피벗으로 삼아 작고 큰 구간을 나누며, 최악 시간과 재귀 깊이가 서로 다른 문제임을 설명합니다.
반으로 나눈 배열이 어떻게 다시 정렬된 전체가 되는지 추적하고, 하나의 보조 배열을 재사용해 병합 비용을 지킵니다.
현재 값을 잠시 보관하고 큰 값만 오른쪽으로 미는 삽입 정렬을 추적하며, 거의 정렬된 입력에 유리한 이유를 알아봅니다.
무엇을 도와드릴까요?
이 글과 함께 공부하기
읽다가 막힌 부분을 물어보세요. 이 글을 바탕으로 설명하고, 이어서 읽을 본문을 연결합니다.