Pascal/Turbo Pascal - como saber ancho de un arbol?

 
Vista:

como saber ancho de un arbol?

Publicado por Miluku (2 intervenciones) el 10/01/2003 03:26:57
Hola!
Como puedo saber el ancho de un arbol binario??
se puede en forma recursiva?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como saber ancho de un arbol?

Publicado por César Augusto Navarro Gómez (182 intervenciones) el 10/01/2003 17:50:04
Lo puedes hacer en forma recursiva, de hecho es bastante recomendable en esa forma para simplificar código y optimizar el programa, lo que puedes hacer es un recorrido del árbol en orden infijo, mientras vas a la izquierda incrementa un contador, al terminar el recorrido a la izquierda guarda la primera vez el contador en la variable máximo, de esta manera tendrás el nivel máximo, al pasar por el nodo padre inicializa para un nuevo conteo dependiendo del nivel en que te encuentres y al ir a la derecha incrementa.
Los recorridos por una dirección te indican crecimiento en el momento que pases por un nodo padre indica un regreso.
Si no te quieres romper el coco con las inicializaciones haz esto

inc(contador);
infijo(izq,contador);
infijo(der,contador);
dec(contador);

en realidad el recorrido infijo solo existe de modo imaginario para entender el problema.

Al terminar sabes el nivel máximo, la altura del árbol, si estás en el nivel 2 (es decir en un hijo de la ríz) el ancho es 2, calculado por 2^(altura-1)

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como saber ancho de un arbol?

Publicado por Miluku (2 intervenciones) el 11/01/2003 04:40:38
Gracias por tu ayuda!!!!

Pero tengo una duda... ud dice que si estoy en el nivel 2 el ancho va a ser 2. Pero si el arbol no estuviera llena??

calculado por 2^(altura-1) ; el ^ es potencia verdad? y el 2 es el nivel?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como saber ancho de un arbol?

Publicado por César Augusto Navarro Gómez (182 intervenciones) el 13/01/2003 16:58:24
Oooops ahí si la pones un poco difícil, te recomiendo entonces que hagas un arreglo con una posición por nivel el cual se inicializa con 0 para todos, y manejar por cada llamada recursiva un parámetro adicional que indique en que nivel se encuentra, si existe esa rama, es decir si no es NIL, se incrementa el contador de ese nivel. De tal manera que al regresar de la llamada principal a la rutina recursiva, tienes en el arreglo el número de elementos por nivel, solo busca el mayor y ese será el ancho del árbol.

Espero que hayas entendido sino postea otro ok?
Suerte
: )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar