AVL Treeby Pigbrain
-Adelson-Velskii, Landis에 의해 제안된 트리
-Binary Search Tree(BST)에서 Balance가 추가된 트리
BST
- 장점
- 단점
- 편향 트리일 경우 연결리스트와 같은 탐색 속도를 낸다
AVL
- 탐색 속도는 BST와 동일하다
- 노드의 왼쪽 서브 트리와 오른쪽 서브 트리의 높이 차는 ±1이하여야 한다
- 삽입과 삭제를 할 때 트리의 높이차가 ±2 이상이 되면 회전을 통하여 ±1이하로 만든다
- 삽입 종류
- LL 타입 : 왼쪽 서브 트리의 왼쪽 서브 트리에 삽입한다
- LR 타입 : 왼쪽 서브 트리의 오른쪽 서브 트리에 삽입한다
- RR 타입 : 오른쪽 서브 트리의 오른쪽 서브 트리에 삽입한다
- RL 타입 : 오른쪽 서브 트리의 왼쪽 서브 트리에 삽입한다
- 회전 종류
- LL 회전 : 오른쪽으로 회전시킨다
- LR 회전 : 왼쪽으로 회전시킨 후 오른쪽으로 회전시킨다
- RR 회전 : 왼쪽으로 회전시킨다
- RL 회전 : 오른쪽으로 회전시킨 후 왼쪽으로 회전시킨다
회전
1. B <- A의 왼쪽 자식
2. B의 오른쪽 자식을 A의 왼쪽 자식으로 만든다
3. A를 B의 오른쪽 자식 노드로 만든다
1. B <- A의 왼쪽 자식
2. B의 왼쪽 자식을 A의 오른쪽 자식으로 만든다
3. A를 B의 왼쪽 자식 노드로 만든다
code
참고
- http://girlsy7.tistory.com/134
Published 06 February 2016