Problemas na Arvore

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.

Se alguem souber onde tem um portugues estrutura ou java desse tipo de arvore com vários irmaos =/

Acho que estao re-inventando a roda.

Abraços.

Eu não ia pela parte dos “vários irmãos” mas sim por “vários filhos”.

E, já agora, tu não estás a implementar VÁRIOS irmãos mas sim UM irmão.

Rapaz, uma dica importante:
Apaga tudo e faz em C, ou C++.
Aí sim vai funcionar. =]

Kara vou falar pra vcs… Java ja eh uma reinvenção da roda… ateh hj nao conseguiram criar neih seu proprio compilador… Java eh coisa de preguiçoso q nao consegue programar em c++ e fica usando framework ou biblioteca pronto…

Não entendi bulhufas do que você falou… tinha que ser um programador Java mesmo…

[quote=pmlm]Eu não ia pela parte dos “vários irmãos” mas sim por “vários filhos”.

E, já agora, tu não estás a implementar VÁRIOS irmãos mas sim UM irmão.[/quote]
E pelo que entendi, um filho também.

regissl se possível edite tua mensagem e coloque os códigos dentro da tag code [code ][/code ]
Trabalhe a árvore pela perspectiva de vários filhos como o pmlm disse, mas ao adicionar um filho faça-o conhecer os irmãos…
Busque por árvores N-árias (N-Ary trees).