Foros del Web » Programación para mayores de 30 ;) » C/C++ »

como saber el nivel de un arbol binario en c??

Estas en el tema de como saber el nivel de un arbol binario en c?? en el foro de C/C++ en Foros del Web. Hola buen dia, a ver si me pueden hechar la mano porque me hace falta una funcion para contar el nivel del arbol binario que ...
  #1 (permalink)  
Antiguo 15/10/2010, 21:09
 
Fecha de Ingreso: octubre-2010
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
como saber el nivel de un arbol binario en c??

Hola buen dia, a ver si me pueden hechar la mano porque me hace falta una funcion para contar el nivel del arbol binario que tengo, alguna idea? la funcion tiene que usar recursividad

saludos
  #2 (permalink)  
Antiguo 15/10/2010, 21:14
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: como saber el nivel de un arbol binario en c??

la funcion puede variar de la implementacion. Pero mas o menos seria asi: Con nivel te refieres a la altura maxima, no?

Bueno mas o menos seria asi

int nivel (miarbol)

if miarbol == hoja then return 1;
else
{
a = nivel(hijoizquierdo);
b = nivel(hijoderecho);
return max(a,b) +1

}

Obviamente que todo depende de como lo implementaste.
  #3 (permalink)  
Antiguo 15/10/2010, 21:19
 
Fecha de Ingreso: octubre-2010
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: como saber el nivel de un arbol binario en c??

Cita:
Iniciado por sam90 Ver Mensaje
la funcion puede variar de la implementacion. Pero mas o menos seria asi: Con nivel te refieres a la altura maxima, no?

Bueno mas o menos seria asi

int nivel (miarbol)

if miarbol == hoja then return 1;
else
{
a = nivel(hijoizquierdo);
b = nivel(hijoderecho);
return max(a,b) +1

}

Obviamente que todo depende de como lo implementaste.
Mira asi tengo mi arbol

El for para llenarlo d 15 numeros aleatorios y al final la funcion de inserta los nodos

for (k=1; k<=15; k++)
{
num=rand()%100;
//Dentro del for llamo la funcion de insertar nodo para ir haciendo el arbol
Raiz=InsertaNodo(num, Raiz);
printf("\t%d\n", num);

}


NodoArbol* InsertaNodo(int valor, NodoArbol *subArbol)
{
if(subArbol==NULL)
{
subArbol=new NodoArbol;
subArbol->HijoIzquierdo=subArbol->HijoDerecho=NULL;
subArbol->dato=valor;
}
else

if(valor<subArbol->dato)
subArbol->HijoIzquierdo=InsertaNodo(valor, subArbol->HijoIzquierdo);

else
subArbol->HijoDerecho=InsertaNodo(valor, subArbol->HijoDerecho);
return(subArbol);
}
  #4 (permalink)  
Antiguo 15/10/2010, 21:45
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: como saber el nivel de un arbol binario en c??

Código C++:
Ver original
  1. int nivel(NodoArbol *t)
  2. {
  3. int a,b;
  4. if (t->HijoIzquierdo == NULL && t->HijoDerecho == NULL)
  5.      return 1;
  6. else
  7. {
  8.     a=nivel(t->HijoIzquierdo);
  9.     b= nivel(t->HijoDerecho);
  10.     if (a<b) return b+1;
  11.     else return a+1;
  12.  
  13. }
  14.  
  15. }
  #5 (permalink)  
Antiguo 15/10/2010, 22:27
 
Fecha de Ingreso: octubre-2010
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: como saber el nivel de un arbol binario en c??

Cita:
Iniciado por sam90 Ver Mensaje
Código C++:
Ver original
  1. int nivel(NodoArbol *t)
  2. {
  3. int a,b;
  4. if (t->HijoIzquierdo == NULL && t->HijoDerecho == NULL)
  5.      return 1;
  6. else
  7. {
  8.     a=nivel(t->HijoIzquierdo);
  9.     b= nivel(t->HijoDerecho);
  10.     if (a<b) return b+1;
  11.     else return a+1;
  12.  
  13. }
  14.  
  15. }
Ya me salio amigo, pero de todas maneras muchas gracias me distes la idea
saludos

Etiquetas: binario, nivel, arboles
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:22.