독학사/자료구조
2022. 4. 24.
[자료구조] 세그먼트 트리 | Segment Tree
세그먼트 트리(Segment Tree)란? 세그먼트 트리는 어떤 구간에 대한 정보(특정 구간에서의 최대/최솟값, 평균, 합 등)를 각각의 노드가 저장하고 있다는 특성을 이용해, O(logN)의 시간복잡도로 구할 수 있게 해주는 자료 구조입니다. 구현의 편의를 위해, 완전 이진트리 형태로 구현하였습니다. 먼저, 전체적인 구조는 아래와 같습니다. 주어진 노드(BaseNodes)의 개수 $N$에 대해 $N < X$를 만족하는 가장 가까운$2^N$값 X에 대해, 세그먼트 트리의 루트노드는 구간 [0,X]까지의 BaseNodes의 세그먼트 값(합)을 의미합니다. 또한, 이 BaseNode의 자식들은 각각 구간[0,X//2),[X//2,X)의 합을 저장하고 있습니다. 이러한 세그먼트 트리의 특성을 잘 이용하면, 우..