자료구조, 알고리즘

레드블랙트리(RB Tree) 정리 및 분석

디버그정 2009. 11. 20. 10:35
이진 검색 트리의 경우 인서트시 오름차순이나 내림차순으로 넣으면
우측자식으로만 혹은 좌측자식으로만 계속 자라는 편향적인 구조가 되버린다.
이것은 트리의 깊이가 집어 넣는 개수만큼 계속 깊어지므로 결국 순차검색(Sequence Search)과
다름없는 최악의 결과가 된다. 순차적으로 집어넣는 경우는 일상적으로도 아주 많을 것이다.
그러므로 이런 삽입과 삭제시 밸런스를 맞추는 알고리즘에 대한 연구가 많이 진행되었다.

레드블랙트리는 밸런스 트리의 대명사인  B트리에서 차원이 3인 경우와 이론적 구조가 같다.
다만 이진트리는 각 노드에 요소가 한개밖에 들어갈 수 없으므로
이를 레드와 블랙이라는 논리적인 요소를 도입함으로써 이진트리의 형식으로 구현한 것이다.
실제로도 B트리나 2-3-4트리 다음에 등장한 이론으로 이를  토대로 구성했다고 한다.(강의 중 들음)
B트리를 고안한 사람이나 이것을 red black tree로 전환해 본 사람이나 참 똑똑한 것 같다.

각 노드에 레드와 블랙이라는 논리적 개념이 적용되면서 밸런스를 맞춰가는 과정이 사소한 것도
다소 난해하게 생각되는 경우가 많으므로,,,
그 전에 먼저 이론적 토대인 B트리에 대해서 삽입과 삭제가 작동하는 원리들인
분할(split), 바로우(borrow or redistribution), 바인드(bind or merge), 스왑(swap)과정에 대한
확실한 이해가 필요하다고 본다.

다음에