Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 게리멘더링2
- 원판 돌리기
- AVL 시간 복잡도
- 조세퍼스 순열
- 백준 5397
- 해시구현
- 백준 17779
- 백준 17822
- Stack 이란
- ㅣ풀이
- 백준
- c#
- 해시 구현
- 구현
- dfs
- 자료구조
- 시간 복잡도
- 백준 2447
- 스택의 특징
- 백준 1158
- qorwns
- C/C++ 구현
- 풀이
- 백준 17471
- heap
- 별 찍기 10
- 5397
- 1764
- 버킷 정렬
- 백준 1406
Archives
- Today
- Total
홍시홍의 프로그래밍
구간 트리(Segment tree) 본문
구간 트리란
구간의 합을 구하기 위한 트리
시간 복잡도
O(logn)
트리 만들기
구간 별 합을 저장할 수 있도록 한다.
트리는 완전 이진 트리로 구성되어 있다
자식은 왼쪽 자식은 *2, 오른쪽 자식은 *2+1이다
위 점을 활용하여 각 구간의 합을 부모에 저장한다
트리 갱신
해당 Index를 포함하는 구간을 현 Index의 값과의 차이를 합하여 갱신한다
특징
1. 배열로 구성
- 배열의 크기는 보통 N*4
- 2^k로 N을 넘을수 있는 최소 수
구간 트리의 updata
그 수를 포함한 모든 노드들을 업데이트 시켜준다
구간 트리의 탐색
탐색은 4가지 경우가 발생한다
1. 탐색 구간이 겹치지 않는 경우 - 종료
2. 탐색 구간이 정확히 일치하는 경우 - 탐색 완료
3. 탐색 구간이 내부에 포함되는 경우 - 탐색 계속
4. 탐색 구간이 걸쳐 있는 경우 - 계속 탐색
0~8
0~4 5~8
0~2 3~4 5~6 7~8
0 1 2 3 4 5 6 7 8
일 경우
2~8검색하면
5~8
3~4
를 검색하면 완료 2를 검색하면 완료
시간 복잡도 O(log n)
'자료구조' 카테고리의 다른 글
[자료구조] B-tree(사용하는 곳, 탐색, 삽입, 삭제, 시간 복잡도) (0) | 2020.07.02 |
---|---|
이진 탐색 트리 (0) | 2019.09.27 |
해싱(Hashing) (0) | 2019.09.27 |
AVL 균형 이진 탐색 트리(20200515 수정) (0) | 2019.09.25 |
트리란?(Tree) (0) | 2019.09.25 |
Comments