Изменения
[→Псевдокод: ]
===Псевдокод===
void points_in_rectangle(rectangle R, rectangle E, vector<point>& points)
queue<node> que
que.push(Q_0.root)
while (!que.empty())
node n = que.pop()
rectangle quad // прямоугольник, соответсвующий вершине n
if (R \cap quad == \varnothing)
continue
else if (n is leaf)
if (n.point in R)
points.push_back(n.point)
else if (quad in E)
n.add_subtree(points) // добавляем все точки поддерева внутренней вершины
else if (n is not critical)
node q // некритическая вершина на максимальном уровне i, соответствующая n
while (true)
if (q is not critical)
q = ребенок q, содержащий ту же область E, что и q
else if (i != 0)
q = такая же вершина на уровень ниже i--
else
break
else
que.add_all(n.children)
== Источник ==