728x90
AVL 트리는 이진 탐색 트리의 단점을 보완한 이진 탐색 트리이다
이진 탐색 트리가 효율적이기 위해서는 균형이 잡혀있어야한다
1. 이진 탐색 트리의 속성을 가진다
2. 왼쪽, 오른쪽 서브 트리의 높이 차이가 최대 1이다
3. 높이 차이가 1보다 커지면 회전(Rotation)을 통해 균형을 맞춰 높이 차이를 줄인다
4. 삽입, 검색, 삭제의 시간 복잡도가 O(log N)이다(N: 노드의 개수)
AVL 트리는 회전 과정을 통해 균형을 잡는다
균형이 무너졌는지 판단하기 위해서 Balance Factor 라는 것을 활용한다
BF(K) = K의 왼쪽 서브트리의 높이 - K의 오른쪽 서브트리의 높이
우회전(Right Rotation)
1. y노드의 오른쪽 자식 노드를 z노드로 변경한다.
2. z노드 왼쪽 자식 노드를 y노드의 오른쪽 서브트리(T2)로 변경한다.
좌회전(Left Rotation)
1. y노드의 왼쪽 자식 노드를 z노드로 변경한다.
2. z노드 오른쪽 자식노드를 y노드의 왼쪽 서브트리(T2)로 변경한다.
'Study > 오늘의 CS 질문' 카테고리의 다른 글
대표적인 sql종류 3가지에 대해서 설명하고 종류별 명령어 나열해주세요 (0) | 2022.09.02 |
---|---|
HTTP의 문제점이 무엇이라고 생각하나요? (0) | 2022.09.02 |
#CORS(Cross-Origin Resource Sharing)이란 무엇일까요? (0) | 2022.08.05 |
#HashMap과 HashTable의 차이를 설명해주세요 (0) | 2022.08.04 |
#브라우저에 접속하여 주소창에 특정 URL을 입력하면 어떤일이 일어날까요? (0) | 2022.08.02 |