트리 알고리즘 2

[ 개념 ] 41. 세그먼트 트리(Segment Tree)

> 세그먼트 트리(Segment Tree) 각 구간들을 그대로 보존하고 있는 트리 전체 구간이 [0, N-1]이라 할 때, 즉 N개의 공간이 있을 때 이렇게 리프 노드들은 길이가 1인 각각의 구간을 갖고 있고 부모 노드는 자신의 자식들의 구간의 합을 갖고 있으며 모든 구간은 연속적이어야만 합니다. 루트는 전체 구간을 포함하게 됩니다. 이렇게 각 노드가 구간, 혹은 그 구간의 정보를 저장하고 있는 자료구조를 말합니다. 보통은 완전 이진 트리의 형태를 사용해 전체적으로 동일한 재귀적 구조가 반복되도록 이렇게 표현하며, 값의 개수가 2^n 꼴이 아닐 때 남는 구간을 의미없는, 혹은 기본 값으로 채워서 포화 이진 트리 형태로 사용하는 게 대부분입니다. 이렇게 하면 값이 N개일 때 반드시 트리의 높이가 O(log..

[ 개념 ] 11. 이진탐색트리(Binary Search Tree)

> 이진탐색트리(BST) Dynamic Set 집합이다. 여러개의 데이터의 집합인데, 그것들의 내용이 고정되지 않고, 생성과 삭제를 반복하면서 유동적인 집합이다. 아래와 같은 특징을 가진다. Dynamic Set, Dictionary 또는 Search Structure라고 불린다. 여러 개의 키(key)를 저장 다음과 같은 연산들을 지원하는 자료구조 INSERT - 새로운 키의 삽입 SEARCH - 키 탐색 DELETE - 키의 삭제 예: 심볼 테이블 일반적으로 구현할 때 배열 or 연결리스트를 사용한다. 각 동작에 있어서 다음과 같은 시간복잡도를 가진다. 정렬된 배열의 이진탐색 - O(logn) 정렬된 배열에서 원소를 insert, delete하면 나머지 원소들을 한칸식 shift - O(n) 정렬된 ..