Java - Desplegar en forma de arbol un arbol binario

 
Vista:
Imágen de perfil de Salvador
Val: 37
Ha disminuido su posición en 18 puestos en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Salvador (12 intervenciones) el 15/06/2020 19:35:38
hola
hice un árbol binario con solo dos clases,"NodoArbol" y "PruebaArbol", donde todos los elementos de mi árbol son de tipo String, necesito un método para imprimir todos mis datos con la siguiente forma:
Preorder:
1
2
3
4
5
6
7
a
	b
		d
		e
	c
		f
		g
Inorder:
1
2
3
4
5
6
7
d
	b
		e
a
		f
	c
		g
Postorder:
1
2
3
4
5
6
7
d
		e
	b
		f
		g
	c
a

mis métodos de orden los imprimen en linea pero bien ose:
Preorden:
1
2
3
4
5
6
7
a
b
d
e
c
f
g
InOrden
1
2
3
4
5
6
7
d
b
e
a
f
c
g
PostOrden
1
2
3
4
5
6
7
d
b
e
c
f
g
a
y mi clase principal esta definida de este modo:
1
2
3
4
5
6
7
NodoArbol raiz = new NodoArbol( "a" );
raiz.izquierdo = new NodoArbol( "b" );
raiz.derecho   = new NodoArbol( "c" );
raiz.izquierdo.izquierdo = new NodoArbol( "d" );
raiz.izquierdo.derecho   = new NodoArbol( "e" );
raiz.derecho.izquierdo   = new NodoArbol( "f" );
raiz.derecho.derecho     = new NodoArbol( "g" );

algien que me pueda asesorar para hacer el método de despliegue,por favor
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
sin imagen de perfil
Val: 26
Ha disminuido su posición en 42 puestos en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Juan (6 intervenciones) el 16/06/2020 01:45:43
Hola, tal vez te pueda ayudar esta pagina https://people.ksp.sk/~kuko/gnarley-trees/ te proporciona un .jar, seria que obtuvieras el código fuente.
Busca este parrafo y donde esta en negrita le das ahi y descargas el .jar espero te sirva.
You can use these visualizations either online on this site or download a standalone application. (The jar file can be run using the command java -jar gt.jar)
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
Imágen de perfil de Salvador
Val: 37
Ha disminuido su posición en 18 puestos en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Salvador (12 intervenciones) el 16/06/2020 03:38:27
ya lo cheque, pero lo que busco es que en la consola me lo imprima algo como la imagen:
asi con espacios entre si, y a mi me salen asi:
Preorden:
a
b
d
e
c
f
g

png
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
Imágen de perfil de Salvador
Val: 37
Ha disminuido su posición en 18 puestos en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Salvador (12 intervenciones) el 16/06/2020 03:48:30
Gracias por el link por cierto
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Rodrigo (623 intervenciones) el 16/06/2020 06:08:25
Implementa los recorridos de manera recursiva.
En vez de pasar solo 1 parametro, tipicamente el nodo a imprimir, pasa ademas, un numero entero que represente el nivel de recursion.
Inicialmente sera 0 y cada vez que llames recursivamente incrementas en 1.

Usa este entero para escribir espacios en blanco antes de imprimir el valor almacenado en el nodo actual.
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
Imágen de perfil de Salvador
Val: 37
Ha disminuido su posición en 18 puestos en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Salvador (12 intervenciones) el 16/06/2020 08:12:23
gracias, ya lo había resuelto de esta manera:
1
2
3
4
5
6
7
8
public void print(NodoArbol aux,int nivel) {
   for(int i=0;i<=nivel;i++){
       System.out.printf("   ");
    }
   System.out.print(nombre);
   System.out.print("\n"+nivel);
   nivel++;
}
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Rodrigo (623 intervenciones) el 16/06/2020 13:15:22
Algunos problemas que veo en la fubcion que presentas:

- aux, el nodo a imprimir, lo ignoras. Imprime el valor al interior de el.
- Considera el caso que sea null
- No es recursiva
- Solo la llamada recursiva tiene que aumentar el nivel
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
Imágen de perfil de Salvador
Val: 37
Ha disminuido su posición en 18 puestos en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Salvador (12 intervenciones) el 17/06/2020 06:55:44
realice este código y al momento de ejecutarlo me imprime como quería el árbol, algo similar hice en los metodos de InOrden,PosOrde

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void printPreorder(NodoArbol aux,int nivel){
    for(int i=0;i<=nivel;i++){
       System.out.printf("   ");
    }
    System.out.print(nombre);
    System.out.print("\n\033[37m"+nivel+"\033[30m");
    nivel++;
    if(hijoIz!=null){
        hijoIz.printPreorder(aux,nivel);
    }
    if(hijoDer!=null){
        hijoDer.printPreorder(aux,nivel);
    }
}
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Rodrigo (623 intervenciones) el 17/06/2020 09:17:23
Ese codigo parece mejor que el anterior
- Ya tienes recursion
- La invocacion recursiva tiene un nivel adicional

Falta:
- Considerar que aux podria ser null
- Usar aux para algo, estas ignorando completamente aux, no estas imprimiendo algun campo de aux.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Salvador
Val: 37
Ha disminuido su posición en 18 puestos en Java (en relación al último mes)
Gráfica de Java

Desplegar en forma de arbol un arbol binario

Publicado por Salvador (12 intervenciones) el 17/06/2020 18:06:17
gracias, checare esas faltas para mejorar mas el codigo
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