Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/01/2009, 06:21
jtlopez
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Funcion con arboles binarios

Así sin pensar mucho se me ocurre que crees una función a la que le pases el árbol y el nodo. Dicha función abre y recorre el árbol y busca el nodo. Una vez que lo tengas, coges cual es la profundidad de dicho nodo y recorres el árbol y cuando llegues a dicha profundidad en una rama, coges el nodo y vuela atrás.
Para almacenarlos, un array de nodos?

Hace tiempo que no manejo árboles, por lo que la opción no es nada óptima, pero así me imagino que saldría.

Creo que había una forma de recorrer los árboles que iba leyendo en profundidad, por ejemplo:
1
2 3
4 5 6 7

Se leería 1, después 2 y 3, y al final 4,5,6 y 7. Con esta solución quizás sería más simple. El código:
Código:
void amplitud(tArbol *a)
{
  tCola cola;
  tArbol *aux;
  
  if (a != NULL) {
    crearCola(cola);
    encolar(cola, a);
    while (!colavacia(cola)) {
      desencolar(cola, aux);
      visitar(aux);                                                   //Realiza una operación en nodo
      if (aux->hIzquierdo != NULL) encolar(cola, aux->hIzquierdo );
      if (aux->hDerecho!= NULL) encolar(cola, aux->hDerecho);
    }
  }
}
http://es.wikipedia.org/wiki/%C3%81rbol_binario#Recorridos_en_amplitud_.28o_por _niveles.29