[자료구조] 세그먼트 트리(Segment Tree)
·
CS/자료구조
0. 세그먼트 트리(Segment Tree)란?세그먼트 트리(Segment Tree)어떤 데이터가 주어질 때, 특정 구간의 결과값(구간합, 최댓값 등)을 구하는데 사용하는 자료구조세그먼트 트리는 이진 트리(Binary Tree) 구조를 가지고 있으며, 특정 구간의 결과값을 시간복잡도 O(logN)으로 빠르게 구할 수 있다는 장점이 있다.또한, 자료의 수정이 빈번히 일어날 때, 사용한다. 이 게시글에서는 누적합을 구하는 세그먼트 트리 기준으로 설명을 한다.만약 구간 최대나 구간 최소를 알고 싶다면, 반환하는 부분만 수정하면 된다.1. 세그먼트 트리 알아보기1-1. 세그먼트 트리 생성(초기화)아래는 [5, 7, 6, 3, 1, 9]인 원본 배열로부터 만든 세그먼트 트리이다.파란 글씨는 해당 노드가 가리키는 ..