Criei uma tabela no banco com os seguintes campos:
id_user
id_user_indicou
lateral
id_user_acima
nivel
e com estas informaçoes pretendo criar uma arvore binaria visual. Pretendo usar recursividade para popular a arvore corretamente, ate por que imagino que não possa ser feito de outra forma.
Entretanto confesso que não faço um método recursivo a uns 10 anos, e estou tendo alguma dificuldade para concluir o método.
A principio tenho:
private String verificaAssociadoArvore(ArrayList<Arvore> lista, int i) {
if(lista.get(i).getId_user_acima() == lista.get(i).getId_user_indicou())
{
return lista.get(i).getId_user() + " " + lista.get(i).getNome();
} else {
verificaAssociadoArvore(lista, i+1);
}
return "Posição Livre";
}
pensei em retornar o nome e usuário concatenados para exibir na arvore caso os valores dos campos usuário_indicou e usuário_acima sejam iguais, e chamar o método novamente para processar o próximo, retornando a String posição livre. A arvore pode ter posições vazias e será exibida com 5 níveis de cada vez, ficando mais ou menos assim:
Fulano 1
F2 F3
F4 F5 F6 F7
ou seja, no banco ficaria assim:
(10, 5, 'E', 5, 4, 'Jorge'),
(12, 10, 'E', 10, 5, 'Fulano'),
(13, 10, 'D', 10, 5, 'Luiz Davi'),
(14, 10, 'D', 13, 6, 'Subaru'),
(16, 10, 'D', 14, 6, 'Forester');