Переключение QuadTree в рекурсивный абстрактный код
Я пытаюсь реверсивно перевернуть четырехугольное дерево вокруг вертикальной оси, но без использования определенного PL. В этом случае я написал следующее, но я на 100% это не очень хорошо, и я не совсем уверен, что я тоже это понимаю.
flip(quadtree) {
if (singleNode)
return quadtree
else return formQuadTree(flip(NW(quadtree)), flip(NE(quadtree)), flip(SW(quadtree)), flip(SE(quadtree)))
Какие-либо предложения?
1 ответ
Заменить:
formQuadTree(flip(NW(quadtree)),flip(NE(quadtree)),flip(SW(quadtree)),flip(SE(quadtree)))
,
С:
formQuadTree(flip(NE(quadtree)),flip(NW(quadtree)),flip(SE(quadtree)),flip(SW(quadtree)))
,
Что именно ты не понимаешь?
formQuadTree( topLeft, topRight, bottomLeft, bottomRight )
- формирует ваше четырехугольное дерево. Каждый раз, когда вы вводите рекурсивно в flip( quadTree )
Вы идете все глубже и глубже внутри индуктивного шага и возвращаете базовый вариант, переворачивая каждый узел, имеющий 4 дочерних quadTrees.
Итак, когда все ваши рекурсивные вызовы попадают в return quadtree
, все ваши индуктивные узлы были расположены соответственно.