자료구조 공부

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

ogh4554 2025. 3. 19. 02:04

1. 개념

: 계층적인 구조를 가지는 트리중에서 각 노드의 자식이 최대 2개인 이진 트리이며, 정렬된 데이터를 빠르게 검색, 삽입, 삭제 할 수 있도록 설계된 자료구조

 

2. 구조와 특징

1) 각 노드의 왼쪽 서브트리에는 "현재 노드보다 작은 값"이 저장됨

2) 각 노드의 오른쪽 서브트리에는 "현재 노드보다 큰 값"이 저장됨

3) 각 서브트리도 위의 규칙을 만족해야 함

        8
       / \
      3   10
     / \    \
    1   6    14
       / \   /
      4   7 13

 

3. 이진 탐색 트리의 연산

1) 검색

- 탐색과정

① 루트에서 시작해서 찾고자 하는 값 X가 현재 노드 값보다 작으면 왼쪽으로 이동

② 크다면 오른쪽으로 이동

③ 탐색


 

2) 삽입

- 삽입과정

① 루트에서 시작해서 삽입할 값 X가 현재 노드보다 작으면 왼쪽으로 이동

② 크면 오른쪽으로 이동

③ 자식노드가 없는 비어있는 곳에 X를 삽입

 


 

3) 삭제

- 삭제과정

① 자식이 없는 노드 삭제 -> 그냥 삭제

② 자식이 하나인 노드 삭제 -> 부모 노드와 자식 노드를 연결

③ 자식이 둘인 노드 삭제 -> 후계자 또는 전임자로 대체

  • 후계자(successor) : 삭제할 노드의 오른쪽 서브트리에서 가장 작은 값
  • 전임자(predecessor) : 삭제할 노드의 왼쪽 서브트리에서 가장 큰 값

연산 평균 시간 복잡도 최악 시간 복잡도
검색 O(log N) O(N)
삽입 O(log N) O(N)
삭제 O(log N) O(N)

 

 

 

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

딕셔너리 (Dictionary <T>)  (1) 2024.11.12
스택(Stack)과 큐(Queue)  (4) 2024.11.10
리스트(LIST)와 링크드리스트(LINKED-LIST)  (0) 2024.11.08