알고리즘 AVL Tree(AVL 트리)
- 최초 등록일
- 2010.02.24
- 최종 저작일
- 2009.12
- 4페이지/ 한컴오피스
- 가격 1,500원
소개글
알고리즘 AVL Tree(AVL 트리)
목차
1. AVL-Tree 란?
2. AVL-Tree가 나온 배경
3. AVL-Tree의 특징
4. AVL-Tree의 핵심
5. AVL-Tree의 삽입 코드
본문내용
1. AVL-Tree 란?
좌, 우측 부트리의 높이가 1이상 차이가 나지 않도록 균형을 유지한 트리로 결국은 탐색시간을 줄일 수 있고, 노드 삽입시 트리의 균형이 크게 변하지 않는 성질을 지닌다.
2. AVL-Tree가 나온 배경
바이너리 트리가 단점을 지니고 있다고 한다면 그것은 노드의 깊이가 불균형해질 수 있다는 점으로 최악의 경우에 O(n)의 시간을 소비할 수도 있다. 이러한 이유 때문에 트리의 균형을 맞추고자하는 시도가 시행되었고 그 결과 AVL-Tree는 최초로 고안해낸 균형 트리가 되었다.
3. AVL-Tree의 특징
AVL은 항상 height를 O(logn)으로 유지한다.
1. N(h)는 높이가 h인 AVL에 존재할 수 있는 최소 노드의 개수이다.
2. N(0) = 1, N(1) = 2
3. N(h) = N(h-1)+N(h-2)+1 이므로 아래의 공식이 성립
4. 그러므로 h=log_1.618^n=O(logn)이 됨
4. AVL-Tree의 핵심
트리가 나온 배경을 보면 알 수 있듯이 균형을 맞추기 위한 방법이 중요하다고 할 수 있다. 일반적인 트리의 균형에 대한 문제는 새로운 노드의 추가 시에 발생을 하게 된다.
높이 균형 트리를 구성하는데 있어서 각 노드에 그 노드의 좌측, 우측 부트리 사이의 높이차를 나타내는 균형 인수(Balance Factor:BF)를 두어 어떠한 노드에 대해서도 BF는 -1, 0, +1 중의 한 개의 값을 취하게 된다. 이것은 즉 모든 노드의 균형 인수가 ±1 이하이면 AVL-Tree라는 뜻이 된다.
⦁균형 인수(Balance Factor) = (왼쪽 서브 트리의 높이-오른쪽 서브 트리의 높이)
만약에 BF가 +2나 -2가 된다고 하면 더 이상 진행이 되지 않고 아래와 같은 4가지 회전을 통해서 균형을 맞도록 유지시킨다. 새로 삽입된 노드를 N, 그리고 N으로부터 가장 가까운 조상 노드를 A라고 하자.
참고 자료
없음