본문 바로가기

CS/자료구조

Tree - Binary Search Tree , heap

이진 탐색 트리

탐색작업을 효율적으로 하기 위한 자료 구조

모든 원소는 다른 키를 가짐

key(왼쪽 서브트리) < key(루트 노드) < key(오른쪽 서브트리)

각각의 서브트리도 이진 탐색 트리

중위 순회 > 오른차순으로 정렬된 값을 얻을 수 있음

이진 탐색 트리 예시

탐색 연산

루트에서 시작

키 값 x

루트노드 키 값 r

- x = r : 원하는 원소이므로 탐색연산 성공

- x < r : 루트노드의 왼쪽 서브트리에 대해 탐색연산

- x > r : 루트노드의 오른쪽 서브트리에 대해 탐색연산

서브트리에 대해 순환적으로 탐색 연산을 반복하기

탐색연산 - 13

삽입 연산

탐색연산을 수행하다 탐색 실패한 위치에 원소 삽입

 

 

검색 알고리즘의 시간복잡도

검색 알고리즘 시간 복잡도
(정렬된) 배열에서의 순차 검색 O(N)
정렬된 배열에서의 이진탐색
(고정 배열 크기와 추가 연산 필요)
O(logN)
이진 탐색트리에서의 평균
최악의 경우
(완전 이진 트리와 균형트리로 바꾼다면 평균, 최악)
O(logN)
O(N)
( O(logN) , O(logN))
해쉬 검색
(추가 저장 공간 필요)
O(1)

 

 

heap

완전 이진 트리에서 키값이 가장 크거나 가장 작은 노드를 찾기 위해 만든 자료구조

max heap

키값이 가장 큰 노드를 찾기 위한 완전 이진 트리

부모노드 키값 > 자식노드 키값

루트 : 키값이 가장 큰 노드

 

min heap

키값이 가장 작은 노드를 찾기 위한 완전 이진 트리

부모노드 키값 < 자식노드 키값

루트 : 키값이 가장 작은 노드

 

힙 연산

삽입

힙 연산 - 삽입 - 17

가장 크거나 가장 작은 숫자가 아닌 경우 일반 노드에서 확장이 되어 삽입됨

힙 연산 삽입 - 23

숫자가 큰 경우 부모 노드와 비교하며 자리바꾸기

> max heap이 됨

 

삭제

힙에서는 루트 노드의 원소만 삭제할 수 있다

1. 루트 노드의 원소 삭제

2. 마지막 노드를 루트로 옮김

3. 더 큰 자식 노드와 자리 바꾸기

4. 빈 자식이 없으면 멈춤 , 부모>자식이 유지되는 채로

 

 

힙의 키를 우선순위로 하여 우선순위 큐를 구현할 수도 있음

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

Tree - Binary Tree  (1) 2024.02.20
Queue  (1) 2024.02.15