Quale approccio è più popolare negli esempi del mondo reale: ricorsione o iterazione?
Ad esempio, semplice attraversamento del preordine dell'albero con ricorsione:
void preorderTraversal( Node root ){
if( root == null ) return;
root.printValue();
preorderTraversal( root.getLeft() );
preorderTraversal( root.getRight() );
}
e con iterazione (usando lo stack):
Push the root node on the stack
While the stack is not empty
Pop a node
Print its value
If right child exists, push the node's right child
If left child exists, push the node's left child
Nel primo esempio abbiamo chiamate di metodo ricorsive, ma nella seconda - nuova struttura di dati ausiliari.
La complessità è simile in entrambi i casi: O (n). Quindi, la domanda principale è il requisito dell'impronta di memoria?