Esto puede ser muy ingenuo, pero me preguntaba, el contexto de los árboles binarios (lisos, ordenados y equilibrados), de todos los tipos de recorrido:
- pre-orden de profundidad primero
- profundidad primero en orden
- orden posterior de profundidad
- amplitud primero
¿cuál es la utilidad real de los pre y post-order? Quiero decir, ¿hay algún tipo y / o configuración de árbol binario en el que el recorrido previo y / o posterior al pedido daría una (alguna) ventaja (s) sobre los otros dos?
AFAICS, hay ciertos tipos y configuraciones de árboles binarios para los cuales, en orden y amplitud, podrían dar cierta ventaja:
-
para un árbol binario equilibrado, cualquier recorrido primero en profundidad utilizará menos espacio de almacenamiento de memoria en comparación con el ancho primero (por ejemplo, para un árbol binario equilibrado de 6 o 7 nodos, la altura es 2, por lo que cualquier recorrido primero en profundidad es necesario almacenar un máximo de 2 nodos en un momento dado, mientras que el último nivel tiene 3 o 4 nodos, por lo que el recorrido transversal más amplio deberá almacenar hasta 3 o 4 nodos en algún punto). En este caso, el uso del recorrido en orden utiliza la menor cantidad de memoria y visita los nodos en su orden natural.
-
para un árbol binario no balanceado, si está cerca del escenario de inserción en el peor de los casos, atravesarlo primero en amplitud usaría menos memoria en comparación con cualquiera de los recorridos en profundidad primero. Así que en este caso la amplitud ofrece una ventaja. El recorrido en orden tiene nuevamente la ventaja de visitar los valores en su orden natural.
Sin embargo, no puedo pensar en una situación en la que el pre y post-recorrido daría una ventaja sobre los otros dos.