Переключение 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, все ваши индуктивные узлы были расположены соответственно.

Другие вопросы по тегам