Table 2 The algorithm to build range tree with fractional cascading. Input P is the original interval set. Return the root node v of the resulting range tree.

From: Efficient Genomic Interval Queries Using Augmented Range Trees

Algorithm BuildRTFC(P)

1.

Sort P by y-value, return an array of intervals Py.

2.

if P contains only one interval i then

3.

    Creating a leaf node vleaf storing this interval. i.e., vleaf. interval = i

4.

else

5.

    Split P into Pleft and Pright, the subsets ≤ and > the median x-value xmid of P.

6.

    Sort Pleft and Pright by y-value.

7.

    Create an FC-index Ileft from Py to Pleft.

8.

    Create an FC-index Iright from Py to Pright

9.

    vleft ← BuildRTFC(Pleft)

10.

    vright ← BuildRTFC(Pright)

11.

    Create a node v storing xmid, Ileft and Iright. v.x = xmid; v. data = Py;         v. lfc = Ileft; v. rfc = Iright; v. lchild = vleft; v. rchild = vright

12.

end if

13.

return v