/**
   * Crea un arbol de TODOS los posibles movimientos a partir de una jugada. Este metodo puede ser
   * bastantee pesado ya que puede crear un arbol de varios miles de nodos al menos para la primera
   * jugada. Alternativamente luego de cada jugada cambia de jugador para simular TODAS las posibles
   * jugadas.
   *
   * @param movida
   * @param jugador
   * @return
   */
  public Arbol<Jugada> crearArbol(Jugada movida, int jugador) {
    Arbol<Jugada> result = new Arbol<Jugada>();

    Arbol.Nodo<Jugada> nodoRaiz = result.insertarHijo(null, movida);

    Cadena<Jugada> posiblesJugadas = movida.getPosiblesJugadas(jugador);
    int otroJugador = (jugador == JUGADOR ? COMPUTADORA : JUGADOR);

    Iterator<Jugada> iter = posiblesJugadas.iterator();
    while (iter.hasNext()) {
      Jugada hijo = iter.next();
      Arbol.Nodo<Jugada> nodoHijo = result.insertarHijo(nodoRaiz, hijo);
      Arbol<Jugada> arbolHijo = crearArbol(hijo, otroJugador);

      nodoHijo.colocarHijosDeRaizDeArbol(arbolHijo);
    }

    return result;
  }