2016-06-12 3 views
1

그 중 n 개의 노드에 Point (x, y) 유형의 객체가 포함 된 BST를 구현했습니다. 트리의 순서는 X의 값에 따라 결정됩니다.BST search problen

는 I 입력으로 X의 범위지고 (X의 왼쪽, 오른쪽 x)는 함수 를 구현해야하며 출력 (EDIT)이다 내지 Y의 좌표의 합 (포함).

모든 노드를 "워킹"하는 것이 그렇게 어렵지는 않습니다. 문제는 O (logn) 복잡성에서 문제가됩니다.

범위와 Y의 합계 필드를 초기화하는 것에 대해 생각했지만 어떻게 든 삽입 및 삭제 기능이 작동하지 않습니다. 아이디어가 있습니까?

+0

나는'O (log n + | right-left |)'를 의미한다고 확신하지만 여전히 많은 변수가 있지만'O (log n)'이다. – Bergi

+0

또는 모든 점에 대해 합계를 누적하여 모든 노드에 캐시 할 수 있으므로 가장자리를보고 범위의 합계를 빠르게 찾을 수 있습니다. – Bergi

답변

0

각 범위의 끝에 도달하면 O(log n) 복잡합니다. 트리의 모든 노드를 볼 필요는 없습니다.

범위의 수를 합한 다음 높은 경계에서 낮은 경계를 뺀 값 (연속적인 선형 범위로 가정)은 일정한 시간 연산입니다.