Pessoal eu tenho esses dois Arrays dentro de um grande Array.
[0]Empresa de Teste | Diretoria de teste | UN de teste | UR de teste | teste
[1]Empresa de Teste | Diretoria de teste | UN de teste | UR de teste 2 | teste 2
Eu preciso fazer uma arvore que possui varios irmaos e salvar cada no como filho do seu pai
e cada irmao do no.
Assim para esse ArrayList teria-se
Empresa de Teste -> Diretoria de teste -> UN de teste -> UR de teste -> teste
UR de teste 2 (irmao de UR de teste) -> teste 2
Eu fiz aqui mas acho que esta bem errado porque resultados bem inesperados.
Arvore:
public class Arvore
{
public String info;
public Arvore filho;
public Arvore irmao;
public Arvore() {
//this.info = info;
//this.irmao = irmao;
//this.filho = filho;
}
public String GetInfo()
{
return info;
}
public void SetInfo(String info)
{
this.info = info;
}
public Arvore GetFilho()
{
return filho;
}
public void SetFilho(Arvore filho)
{
this.filho = filho;
}
public Arvore GetIrmao()
{
return irmao;
}
public void SetIrmao(Arvore irmao)
{
this.irmao = irmao;
}
}
Meu metodo de insercao:
public Arvore InsereNo(Arvore raiz, String valor, int camada)
{
if (raiz == null)
{
Arvore novoNo = new Arvore();
novoNo.SetInfo(valor);
return novoNo;
} else
{
//procura se nessa camada ja existe o nodo
//ir ateh este nivel nos filhos
//procurar se nao ha ninguem nos irmaos, se nao tiver insere no irmao desde nodo corrente
int numCamada = 0;
int i = 0;
Arvore auxiliar = new Arvore();
Arvore novoAux = new Arvore();
Arvore anterior = new Arvore();
bool naoAdiciona = false;
//while (raiz != null)
//{
auxiliar = raiz;
while (auxiliar != null)
{
i++;
//estamos na camada se entrar
if (i == camada)
{
//procura se nao tem nenhum irmao com seu valor
novoAux = auxiliar;
naoAdiciona = false;
while (novoAux != null)
{
if (novoAux.info.Equals(valor))
{
naoAdiciona = true;
break;
}
novoAux = novoAux.irmao;
}
if (naoAdiciona == false)
{
//adiciona um novo irmao
Arvore novoNodoIrmao = new Arvore();
novoNodoIrmao.info = valor;
auxiliar.irmao = novoNodoIrmao;
}
break; //ja achou a camada, sai fora
}
anterior = auxiliar;
auxiliar = auxiliar.filho;
}
//nao tem ninguem nessa camada (camada vazia)
if (auxiliar == null && i < camada)
{
Arvore novoNodoFilho = new Arvore();
novoNodoFilho.SetInfo(valor);
anterior.filho = novoNodoFilho;
}
//}
}
return raiz;
}
A inserção ta com problemas, alguem pode ajudar com essa arvore?
Abraços.