Range Tree คืออะไร?
Range Tree = Ordered Tree Data Structure จัดเก็บ List ของ Points รองรับการ Retrieve Points ทั้งหมดใน Range ที่กำหนดได้อย่างมีประสิทธิภาพ ใช้ใน 2D ขึ้นไป
คล้าย kd-tree แต่: Query เร็วกว่า O(logd n + k) แต่ Storage มากกว่า O(n logd-1 n)
d = Dimension, n = จำนวน Points, k = จำนวน Points ที่ Retrieve
ต่างจาก Interval Tree: Range Tree เก็บ Points + Range Query, Interval Tree เก็บ Intervals + Point Containment Query
Data Structure

1D Range Tree = Balanced BST บน Points Points เก็บที่ Leaves, Internal Node เก็บ Max Value ใน Left Subtree
d-Dimensional Range Tree = Recursively Defined Multi-level BST
Level 1: BST บน Coordinate แรก
Vertex v แต่ละตัวมี Associated Structure = (d-1)-D Range Tree บน (d-1) Coordinates สุดท้ายของ Points ใน Subtree ของ v
Operations
Construction
1D Range Tree: O(n log n) (Build Balanced BST)
Higher Dimensions: Build BST บน Coordinate แรก → สำหรับแต่ละ Vertex v สร้าง (d-1)-D Range Tree บน Points ใน Subtree ของ v
Total: O(n logd n) Time
Query (Range Search)
1D: Standard BST Range Query O(log n + k)
d-D: Descend Level 1 Tree หา Nodes ที่ Overlap Query Range → สำหรับแต่ละ Node Query Associated (d-1)-D Tree
สรุป Complexity
| Operation | Time Complexity | Space Complexity |
|---|---|---|
| Construction | O(n logd n) | O(n logd-1 n) |
| Range Query | O(logd n + k) | - |
| Insert/Delete (Dynamic) | O(logd n) | - |