뜌릅

이진 탐색 트리 Binary Search Tree (BST) 자료구조 본문

자료구조

이진 탐색 트리 Binary Search Tree (BST) 자료구조

TwoCastle9 2023. 10. 12. 17:36
반응형

이진 탐색 트리 목적:

이진 탐색: O(logN)이다. But 삽입과 삭제가 불가능하다. 

연결리스트 : 삽입, 삭제의 시간복잡도는 O(1), but 탐색하는 시간 복잡도가 O(N)이다.

이 두가지를 합하여 장점을 모두 얻는 것이 '이진탐색트리'이다.

 

특징: 

- 각 노드의 자식이 2개 이하

- 각 노드의 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 큼

- 중복된 노드가 없어야 함

중복이 있다면 굳이 이진검색트리를 사용하게 할 필요가 없다. 차라리 중복개수를 저장할 수 있게 노드의 구조를 바꾸는게 효율적이다. 

삽입과, 삭제가 이루어져도 위의 구조를 유지하는것이 핵심이다. 

 

시간복잡도:

탐색, 삽입, 삭제 모두 시간복잡도가 O(h)가 된다.  h = logN, worst h= N이다. 

이를 해결 하기 위해  AVL Tree와 Red Black Tree, B트리, B+트리가 생겼다.

 

삭제의 3가지 Case

1. 자식이 없는 leaf 노드일 때 -> 삭제

2. 자식이 1개 있는 노드일때 -> 지워진 자리에 자식 올리기. 

3. 자식이 2개인 노드일 때 -> 오른쪽 자식 노드에서 가장 작은 값 or 왼쪽 자식 노드에서 가장 큰 값 올리기. 

 

AVL 트리의 경우 삭제 or 삽입이 이루어 질 때마다, Rotate을 통해서 높이차가 2이상 나지 않게 균형을 유지하는 트리이다. 

레드 블랙 트리는 자가 균형 이진 탐색 트리이다. AVL에서 자가라는 말이 붙은것. 

 

반응형

'자료구조' 카테고리의 다른 글

비트리 B-Tree B+ Tree 자료구조  (0) 2023.10.18
트라이 Trie 자료구조  (0) 2023.10.18
트리 Tree 자료구조  (0) 2023.10.12
힙 Heap 자료구조  (0) 2023.10.12
해시 Hash 자료구조  (0) 2023.10.12