elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Listar niveles Árbol n-ario
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Listar niveles Árbol n-ario  (Leído 5,375 veces)
chinolaya

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Listar niveles Árbol n-ario
« en: 3 Febrero 2015, 01:51 am »

Hola a todos. Soy nuevo por el foro y este es mi primer mensaje.

Tengo problemas para lograr escribir el siguiente algoritmo.
Necesito un algoritmo que me liste o imprima los nodos por niveles de un árbol n-ario, finitario o general (lo he encontrado con cualquiera de los tres nombres por internet).

La estructura del árbol es la siguiente:

struct nodo{
   int dato;
   nodo * primerHijo;
   nodo * siguientehermano;
};


Cualquier tipo de ayuda sera bienvenida.

Gracias.


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Listar niveles Árbol n-ario
« Respuesta #1 en: 3 Febrero 2015, 07:47 am »

¿y qué tienes hecho hasta ahora?

¿Dónde te atascas?

No se hacen tareas... si no aportas nada no creo que ayude demasiado.


En línea

chinolaya

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Listar niveles Árbol n-ario
« Respuesta #2 en: 3 Febrero 2015, 11:55 am »

No pude editar el mensaje original, por lo tanto sigo por aquí.

No había puesto el código que hice porque no ayuda en nada, no hace lo que tiene que hacer por lo tanto no logre nada con el.

Dejo un ejemplo para ver si queda mas claro lo que necesito. Este es un ejemplo de un arbol general o n-ario que tengo:

               1
     2        7        8
  3    6            9     12
4 5             10 11

Lo que tendría que imprimir seria:

1
2 7 8
3 6 4 5 9 12
10 11

El problema esta cuando tengo que imprimir nodos que están en un mismo nivel pero son hijos de padres distintos. Ahí se me complica ya que tendría que saltar de una rama a otra para seguir imprimiendo.

Una idea bastante general de lo que venia haciendo es la siguiente:

void muestroNiveles(nodo *raiz){
   nodo *aux = raiz;
   if(raiz != NULL){
      cout<<aux->dato;
      muestroNiveles(aux->siguienteHermano);
      cout<<end; //Esto seria para imprimir el espacio cuando cambio de nivel
      muestroNiveles(aux->primerHijo);
   }
}
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Listar niveles Árbol n-ario
« Respuesta #3 en: 3 Febrero 2015, 12:33 pm »

Para conseguir esa salida puedes optar por una función del tipo:

Código
  1. int mostrarNiveles(nodo *nodo_actual, int nivel );

La llamada principal debería ser algo del tipo:

Código
  1. int nivel = 0;
  2. while( mostrarNiveles( raiz, nivel ) )
  3.  nivel++;

Esto es, se llama a la función en bucle y, en cada iteración, se incrementa el valor de "nivel". Esta variable te debería permitir imprimir únicamente un nivel del árbol. Para ello puedes, por ejemplo, seguir la siguiente secuencia en "mostrarNiveles":

* si el nivel es 0, imprimo el valor actual y salgo de la función retornando 1
* decremento el valor de nivel
* Si tengo hijos, llamo a "mostrarNiveles" pasando como nodo actual mis dos hijos.
* Si no tengo hijos retorno "0"

Falta algún detalle por incluir para que funcione bien, como poner los saltos de línea, pero vale para un pseudocódigo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Modificados niveles de lectura en el foro?
Sugerencias y dudas sobre el Foro
invisible_hack 4 3,568 Último mensaje 8 Marzo 2009, 01:07 am
por YZ7HMPM
audio, niveles de onda [resuelto]
Java
danielo- 1 2,647 Último mensaje 13 Diciembre 2009, 17:00 pm
por danielo-
Juego: Reto de pasar niveles
Desafíos - Wargames
Pox1 6 8,915 Último mensaje 11 Enero 2011, 21:42 pm
por Pox1
Agregando niveles de usuarios « 1 2 3 4 »
PHP
neopuerta360 34 12,810 Último mensaje 25 Octubre 2010, 00:56 am
por neopuerta360
Establcer niveles, con una tabla y con un iframe???
Desarrollo Web
j.lerin 3 3,061 Último mensaje 22 Febrero 2012, 01:07 am
por j.lerin
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines