Es como las otras dos técnicas transversales: preordenar e inordenar. Es un poco complicado, ya que hacemos un seguimiento del subárbol correcto que tenemos que procesar, después del subárbol izquierdo, antes de procesar el nore actual.
La siguiente es la implementación de Java de la misma. Avíseme si ve algún error / error.
Nodo de clase {
datos int;
Nodo izquierda, derecha;
}
- Cómo escribir un orden de fusión en SQL sin formato
- ¿Se pueden implementar dfs sin recursividad?
- ¿Cuáles son algunos de los recursos disponibles para los estudiantes de informática en predicción de la estructura secundaria de ARN?
- ¿Cómo construiría una estructura de datos compartidos para un alto rendimiento y disponibilidad?
- ¿Cuáles son las mejores preguntas de la entrevista de estructura de datos de árbol?
public static void postOrderTraversal (raíz del nodo) {
Pila pila = nueva Pila ();
Nodo curr, anterior;
curr = raíz;
prev = nulo;
// Regresará una vez que la pila esté vacía
while (verdadero) {
// Continúa procesando el subárbol izquierdo
while (curr! = null) {
stack.push (curr);
curr = curr.left;
}
if (stack.isEmpty ()) {
descanso;
}
// Comprueba si tenemos un subárbol correcto para procesar
Nodo top = stack.pop ();
if (top.right == null || top.right == prev) {
System.out.print (“\ t” + top.data);
} más {
// Tenemos un subárbol correcto, necesitamos procesarlo antes del nodo actual
stack.push (arriba);
curr = top.right;
}
prev = arriba;
}
}