지난 글에서는 splay tree의 기본이 되는 두 가지 연산(rotate, splay)을 알아보았습니다.
이번 글에서는 splay tree에서 삽입/삭제/검색 연산이 어떻게 이루어 지는지 알아보도록 하겠습니다.
insert
삽입 함수를 만들어봅시다.
작동 방식은 일반적인 이진 탐색 트리의 삽입 방식과 같습니다만, 마지막에 삽입한 노드를 splay해줍니다.
1 |
|
find
find함수를 구현해봅시다.
find함수도 일반적인 이진 탐색 트리와 방식은 같고, 마지막에 검색한 노드를 splay해주어서 다른 부가적인 연산을 쉽게 할 수 있게 해줍니다.
1 |
|
delete
마지막으로 delete함수를 구현해봅시다.
delete함수는 먼저 삭제를 할 노드를 splay 한 뒤, 삭제를 합니다.
만약 자식이 0개 혹은 1개라면 그냥 삭제를 하지만, 자식이 2개라면 두 서브 트리를 붙여줍니다.
1 |
|
지난 글에서는 splay tree의 기본 연산, 이번 글에서는 splay tree에서의 삽입/삭제/검색 방법에 대해 알아보았습니다.
다음 글에서는 k-th element를 찾는 방법에 대해 알아보겠습니다.