티스토리 뷰

이진 탐색 트리


- 이진 탐색 트리를 중위 순회하면 정렬된 값들을 얻을 수 있다.

- 삽입, 삭제가 일어나도 이는 유지된다.

- 한 쪽으로 값이 쏠리는 불균형 이진 트리가 되면 연산의 시간복잡도가 O(N)에 가까워 진다.

- 그래서 BST를 naive 하게 구현해서 해결하려고 했을 때 시간 초과를 볼 수 있었다.




풀이 방법


1. 삽입할 X의 위치를 찾는다.


- 트리의 최솟값보다 작다면? 왼쪽 끝에 삽입하면 된다.


- 트리의 최댓값보다 크다면? 오른쪽 끝에 삽입하면 된다.


- 트리의 어떤 값 A, B 사이에 있다면? (A < X < B) 


=> 

 A의 오른쪽 서브트리 또는 B의 왼쪽 서브트리에 들어갈 수 있다.

A, B 둘 중, 깊이가 큰 쪽을 기준으로 삽입하면 된다.

직접 BST 를 그려보면 알 수 있다. 깊이가 작은 쪽은 자리가 없다.




2. 이 때, insert의 호출 횟수는 부모 노드의 깊이 + 1


카운터 C += (insert 호출 횟수)






반응형

'백준 온라인 저지' 카테고리의 다른 글

200122 BOJ 2819 상근이의 로봇  (0) 2020.01.23
190704 BOJ 1309 동물원  (0) 2019.07.04
190411 BOJ 15683번 감시  (0) 2019.04.11
190408 BOJ 14891번 톱니바퀴  (0) 2019.04.08
190407 BOJ 12100번 2048 (Easy)  (0) 2019.04.07
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함