мы можем пройти через дерево двоичного поиска с помощью рекурсии, как:Двоичный поиск Обход предварительного предпросмотра деревьев, рекурсия против цикла?
void traverse1(node t) {
if(t != NULL) {
visit(t);
traverse1(t->left);
traverse1(t->right);
}
}
, а также через петлю (с стека), как:
void traverse2(node root) {
stack.push(root);
while (stack.notEmpty()) {
node next = stack.pop();
visit(next);
if (next->right != NULL)
stack.push(next->right);
if (next->left != NUll)
stack.push(next->left)
}
}
Вопрос
Какой из более эффективна? Зачем?
Я думаю, что эти два метода сложности времени - это и O (n). так что все различия все в сложности пространства или ...?
Мне любопытно, почему это было приостановлено. –