Criar metodo para impressão espaçada

3 respostas
W

Ajuda para criar um método auxiliar ao método "escreve" que tenha um parâmetro adicional (o nível de endentação). Se o nível for 1, por exemplo, você põe 5 espaços, se for 2, você põe 10 e assim por diante.

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 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();
	}
}

no formato atual o código esta sendo impresso da seguinte maneira

= A{B{D}{E}}{C{F}{G}}

Acredito que de forma identada ele devera ser impresso na seguinte forma:

a
_______ b
______________ d
______________ e
_______ c
______________ f
______________ g

(as linhas são só para representar a identação)

Como posso alterar o código para que ele imprima desse jeito?

3 Respostas

E

Crie um método auxiliar ao método “escreve” que tenha um parâmetro adicional (o nível de endentação). Se o nível for 1, por exemplo, você põe 5 espaços, se for 2, você põe 10 e assim por diante.

W

você poderia dar um exemplo prático de como isso poderia ser feito?

W

:?:

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