Изменения

Перейти к: навигация, поиск

Skip quadtree: определение, время работы

166 байт добавлено, 21:33, 20 сентября 2014
Псевдокод
===Псевдокод===
'''void ''' points_in_rectangle('''rectangle ''' R, '''rectangle ''' E, '''vector<point>& ''' points) '''queue<node> ''' que que.push(<tex>Q_0</tex>.root) '''while ''' (!que.empty()) '''node ''' n = que.pop() '''rectangle quad ''' K // прямоугольник, соответсвующий вершине n '''if ''' (R <tex>\cap quad </tex> K == <tex>\varnothing</tex>) '''continue''' '''else if ''' (n is leaf) '''if ''' (n.point in R)
points.push_back(n.point)
'''else if ''' (quad in K <tex>\subset</tex> 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)
Анонимный участник

Навигация