Рекурсии везде плохо работают.
Дерево для хранения возвратов не нужно, возврат происходит в одно и то же место. Для такого используются структуры типа стек. В нормальных языках вообще используется их аппаратная реализация.
Если есть желание разобраться, как именно оно работает, можно заглянуть в потроха питона, они открыты, правда, ничего интересного там нет.