Boa noite pessoal, aqui quem vos fala é um estudante de programação desesperado.
Meu problema é o seguinte: tenho que construir um método que retorna uma String (toStringPorNivel) com uma Arvore Binária concatenada de acordo com seus níveis, por ser um objt da própria classe que vai chamar o método não há a necessidade de passar nada como parâmetro.
Mesmo quebrando um pouco a cabeça, consegui realizar os métodos: toStringPreOrdenado, toStringPosOrdenado e o toStringPorArvore…
O que eu fiz aqui, retorna uma String texto onde, a cada quebra de linha, é registrada na variável de texto uma arvore, basta ela possuir um elemento na sua raiz
Segue o código:
public String toStringPorArvore() {
String texto = "";
if(!this.vazia()){
}
if (!this.vazia()) {
texto += "RAIZ -> " + this.getRaiz();
if (!this.getEsq().vazia()) {
texto += " ESQUERDA ->" + this.getEsq().getRaiz();
}
if (!this.getDir().vazia()) {
texto += " DIREITA ->" + this.getDir().getRaiz();
}
if (!this.esq.vazia()) {
if (!this.getEsq().getEsq().vazia()) {
texto += "\n" + this.getEsq().getEsq().toStringPorArvore();
}
if (!this.getEsq().getDir().vazia()) {
texto += "\n" + this.getEsq().getDir().toStringPorArvore();
}
}
if (!this.dir.vazia()) {
if (!this.dir.getDir().vazia()) {
texto += "\n" + this.getDir().getDir().toStringPorArvore();
}
if (!this.dir.getEsq().vazia()) {
texto += "\n" + this.getDir().getEsq().toStringPorArvore();
}
}
}
return texto;
}
O que esse código faz é:
Exemplo de Arvore:
6
/
4 7
/ \
3 5 8
Após usar o meu método o retorno será o seguinte:
6, 4, 7
4, 3, 5
7,8
O que eu preciso é de algo assim:
Exemplo de arvore:
6
/
4 7
/ \
3 5 8
Resultado:
6
4,7
3,5,8
A ARVORE PODE TER INFINITOS RAMOS
Eu realmente não sei como resolver isso, já exauri minhas forças em duas madrugadas, qualquer ajuda é de bom grado aceita.
Desde já, obrigado!