Этот код перемещается по дереву, но не использует рекурсию, заменяя его стеком. Максимальный размер стека должен быть числом узлов на последнем уровне. Является ли пространственная сложность следующего кода: O (высота), где высота корня равна 0?Космическая сложность обхода дерева без рекурсии
public void preOrder() {
if (root == null) throw new IllegalStateException("the root cannot be null");
final Stack<TreeNode<E>> stack = new Stack<TreeNode<E>>();
stack.add(root);
while (!stack.isEmpty()) {
final TreeNode<E> treeNode = stack.pop();
System.out.print(treeNode.item + " ");
if (treeNode.right != null) stack.add(treeNode.right);
if (treeNode.left != null) stack.add(treeNode.left);
}
}
Да, вы правы, но не O (высота 2 ^), такая же, как O (N), где N - количество узлов в дереве в худшем случае. Также максимальный размер стека может быть N в худшем случае – sashas