To find all intervals containing point :
function queryPoint(node, p)
if node is null then
return empty list
result := []
if p < node.mid then
// Check center intervals sorted by low
for interval in node.centerByLow
if interval.low <= p then
result.add(interval)
else
break
result.addAll(queryPoint(node.left, p))
else if p > node.mid then
// Check center intervals sorted by high
for interval in node.centerByHigh
if interval.high >= p then
result.add(interval)
else
break
result.addAll(queryPoint(node.right, p))
else // p == node.mid
result.addAll(node.center)
return result
Time: where is the number of results.