Algortimo
for nodoActual = 1..N //for principal
for nodoI = 1..N //para cada nodo, se deben
recalcular la matriz de
for nodoJ = 1..N //distancias completamente
if D(nodoI, nodoJ) > D(nodoI, nodoActual)
+ D(nodoActual, nodoJ)
//si mejora algun costo
se realizan los reemplazos y actualizaciones
D(nodoI, nodoJ) = D(nodoI,
nodoActual) + D(nodoActual, nodoJ)
P2.- Considere un árbol binario definido mediante las clases
public abstract class Nodo {
public abstract void espejo();
}
public class NodoExt extends Nodo {
public abstract void espejo() {
...
}
}
public class NodoInt extends Nodo {
int info;
Nodo izq, der;
public abstract void espejo() {
...
}
}
Implemente en Java los métodos espejo() que aparecen con líneas de puntos, de modo que cuando se invoque p.espejo(), esto transforme a todo el árbol apuntado por p en su versión simétrica (esto es, en que en todas partes se ha intercambiado el hijo izquierdo con el hijo derecho).
externo:
public void espejo() {
// nada que hacer :)
}
interno:
public void espejo() {
// swap de los nodos hijos
Nodo aux = izq;
izq = der;
der = aux;
// llamada recursiva
izq.espejo();
der.espejo();
}