알고리즘/그래프
2020. 6. 15.
Euler tour technique
트리를 펴서 배열에 저장해봅시다. 다음과 같은 트리가 있다고 가정해봅시다. 1번 정점이 루트입니다. 이 트리에서 루트인 1번 정점부터 시작해 DFS를 돌립니다. 그리고 각 정점이 방문되는 순서대로 번호를 다시 붙여줍시다. 그리고 새로 붙인 번호를 인덱스로 하는 배열에 각 정점을 저장합시다. 그러면 트리를 배열에 저장할 수 있게 됩니다. 방법은 매우 간단한데, 굳이 이런식으로 저장을 하는 이유가 뭘까요? 이런 식으로 트리를 저장하면, 각 정점을 루트로 하는 서브트리가 모두 하나의 구간으로 나타나게 됩니다. 1번 정점의 서브트리는 구간 \([1,7]\), 2번 정점의 서브트리는 구간 \([2,5]\), 3번 정점의 서브트리는 구간 \([6,6]\)... 이와 같이 각 서브트리를 하나의 구간으로 바꿔 생각할 ..