P1.- Floyd sólo con actualización de costos

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();
  }