Questo può essere molto ingenuo, ma mi chiedevo, è il contesto di alberi binari (semplici, ordinati ed equilibrati), di tutti i tipi di attraversamento:
- profondità pre-ordine
- primo in ordine di profondità
- profondità del primo ordine
- ampiezza
qual è l'utilità effettiva di pre e post-ordine? Voglio dire, c'è qualche tipo e / o configurazione dell'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 qualsiasi attraversamento in profondità utilizza meno spazio di memoria rispetto all'ampiezza prima (ad es. per albero binario bilanciato di 6 o 7 nodi, l'altezza è 2, quindi qualsiasi attraversamento in profondità dovrà memorizzare un massimo di 2 nodi in qualsiasi momento, mentre l'ultimo livello ha 3 o 4 nodi, quindi l'ampiezza del primo attraversamento avrebbe bisogno di memorizzare fino a 3 o 4 nodi ad un certo punto). In questo caso, l'utilizzo di attraversamento in ordine utilizza la minima quantità di memoria e visita i nodi nel loro ordine naturale.
per un albero binario non bilanciato, se si avvicina allo scenario di inserzione nel caso peggiore, attraversandolo per ampiezza utilizzerebbe meno memoria rispetto a qualsiasi traversata in profondità. Quindi, in questo caso, l'ampiezza offre innanzitutto un vantaggio. Il traversal in ordine ha ancora il vantaggio di visitare i valori nel loro ordine naturale.
Tuttavia, non riesco a pensare a una situazione in cui pre e post-traversal darebbero un vantaggio rispetto agli altri due.
A + B * C
, il che è molto più facile da capire per gli utenti normali rispetto a entrambi i prefissi dell'ordine postfisso.