Impressão Endentada

2 respostas
W

Gostária de ajuda para editar o metodo Identa para que o mesmo tenha um parâmetro adicional (o nível de endentação). Ex: Se o nível for 1, 5 espaços antes do caracter, se for 2, 10 espaços antes do caracter, se for 3, 15 espaços antes do caracter e assim por diante.

segue o código:
public class Arvore {
	public Arvore esq;
	public Object info;
	public Arvore dir;

	public static boolean estaCheio(Arvore a) {
		return a.esq != null && a.dir != null;
	}
	public static Arvore insere(Arvore pai, String onde, Object elemento) {
		if (estaCheio(pai)) {
			System.out.println("O nó escolhido está cheio");
			return null;
		} else {
			Arvore item = new Arvore();
			item.info = elemento;
			if (onde.equals("esq")) {
				if (pai.esq == null) pai.esq = item;
				else System.out.println("A perna escolhida já está preenchida");
			}
			if (onde.equals("dir")) {
				if (pai.dir == null) pai.dir = item;
				else System.out.println("A perna escolhida já está preenchida");
			}
			return item;
		}
	}
	public void escreve(){
		System.out.print(info.toString());
		if(esq!=null){
			System.out.print("{");
			esq.escreve();
			System.out.print("{");
		}
		if(dir!=null){
			System.out.print("{");
			dir.escreve();
			System.out.print("}");
		}
	}
	public void Identa(){
		System.out.println();
		System.out.print(info.toString());
		if(esq!=null){
			System.out.print("");
			esq.Identa();
			System.out.print("");
		}
		if(dir!=null){
			System.out.print("");
			dir.Identa();
			System.out.print("");
		}
	}
}
public class TesteArvore {
	public static void main(String args[]){
		Arvore a = new Arvore();
		a.info = "A";
		Arvore b = new Arvore();
		b.info = "B";
		Arvore c = new Arvore();
		c.info = "C";
		Arvore d = new Arvore();
		d.info = "D";
		Arvore e = new Arvore();
		e.info = "E";
		Arvore f = new Arvore();
		f.info = "F";
		Arvore g = new Arvore();
		g.info = "G";
		b = Arvore.insere(a, "esq", "B");
		c = Arvore.insere(a, "dir", "C");
		d = Arvore.insere(b, "esq", "D");
		e = Arvore.insere(b, "dir", "E");
		f = Arvore.insere(c, "esq", "F");
		g = Arvore.insere(c, "dir", "G");
		a.escreve();
		a.Identa();
	}
}

2 Respostas

heroijapa

complexo de entender esse código, mas acho que peguei.

talvez um while resolva

pai = arvore.pai();

while (pai != null)

{

system.out.print("     ");

pai=pai.pai();

}

mas para isso a arvore não teria que ter só os filhos dela esq e dir, ela teria que guardar o pai dela.

Assim na hora de printar vc da x espacos pra cada pai até nao ter mais pai nenhum. é isso q o meu while tenta fazer

espero ter ajudado

W

heroijapa:
complexo de entender esse código, mas acho que peguei.

talvez um while resolva

pai = arvore.pai();

while (pai != null)

{

system.out.print("     ");

pai=pai.pai();

}

mas para isso a arvore não teria que ter só os filhos dela esq e dir, ela teria que guardar o pai dela.

Assim na hora de printar vc da x espacos pra cada pai até nao ter mais pai nenhum. é isso q o meu while tenta fazer

espero ter ajudado


Alguem poderia me ajudar a implementar esse código ao de cima, pois estou boiando nessa questão deve ser trauma de já estar com uma semana tentando e sem sucesso.

Criado 24 de agosto de 2011
Ultima resposta 25 de ago. de 2011
Respostas 2
Participantes 2