Questo può essere molto ingenuo, ma mi stavo chiedendo, il contesto degli alberi binari (semplice, ordinato ed equilibrato), di tutti i tipi di attraversamento:
- depth-first pre-order
- depth-first in-order
- depth-first post-order
- breadth-first
qual è l'utilità effettiva di quelli pre e post-ordine? Voglio dire, c'è qualche tipo e / o configurazione di un albero binario in cui l'attraversamento pre e / o post-ordine darebbe un (qualche) vantaggio (s) rispetto agli altri due?
AFAICS, ci sono alcuni tipi e configurazioni di alberi binari per i quali in-order e breadth-first potrebbero dare un certo vantaggio:
-
per un albero binario bilanciato ogni attraversamento in profondità utilizzerà meno spazio di memoria rispetto a larghezza prima (ad esempio per un albero binario bilanciato di 6 o 7 nodi, l'altezza è 2 quindi qualsiasi attraversamento in profondità sarà è necessario memorizzare un massimo di 2 nodi in un dato momento, mentre l'ultimo livello ha 3 o 4 nodi in modo che l'attraversamento dell'ampiezza iniziale debba memorizzare fino a 3 o 4 nodi ad un certo punto). In questo caso, l'attraversamento in ordine utilizza la minor quantità di memoria e visita i nodi nel loro ordine naturale.
-
per un albero binario non bilanciato, se è vicino allo scenario di inserimento nel caso peggiore, percorrendolo in ampiezza si utilizza meno memoria rispetto a qualsiasi traversamento in profondità. Quindi in questo caso l'ampiezza offre un vantaggio. Traversal in-order ha ancora il vantaggio di visitare i valori nel loro ordine naturale.
Tuttavia non riesco a pensare a una situazione in cui il pre e il post-attraversamento darebbero un vantaggio rispetto agli altri due.