Beispiel #1
0
        public void Inserir(int valor)
        {
            ArvoreBinaria newNo = new ArvoreBinaria();

            newNo.setValor(valor);
            if (Root.getAnterior == null && root.getValor == null)
            {
                root.setValor(valor);
                root.setDireita(null);
                root.setEsquerda(null);
            }
            else
            {
                ArvoreBinaria aux = BuscarInsercao(valor);
                if (aux == null)
                {
                    Console.WriteLine("Valor existente - " + valor);
                }
                else
                {
                    if (valor > aux.getValor)
                    {
                        aux.setDireita(newNo);
                        newNo.setAnterior(aux);
                    }
                    else
                    {
                        aux.setEsquerda(newNo);
                        newNo.setAnterior(aux);
                    }
                }
            }
            quantidade++;
        }
Beispiel #2
0
 public void PosOrdem(ArvoreBinaria obj)
 {
     if (obj != null)
     {
         EmOrdem(obj.getEsquerda);
         EmOrdem(obj.getDireita);
         Console.Write(obj.getValor + "  ");
     }
 }
Beispiel #3
0
 public int Altura(ArvoreBinaria no)
 {
     if ((no == null) || (no.getEsquerda == null && no.getDireita == null))
     {
         return(0);
     }
     else
     {
         return(1 + (Maior(Altura(no.getEsquerda), Altura(no.getDireita))));
     }
 }
Beispiel #4
0
 public void Excluir(ArvoreBinaria no, int?valor)
 {
     if (no == null)
     {
         Console.WriteLine("Não há nada para buscar!");
     }
     else
     {
         if (valor > no.getValor)
         {
             Excluir(no.getDireita, valor);
         }
         else if (valor < no.getValor)
         {
             Excluir(no.getEsquerda, valor);
         }
         else
         {
             if (no.getDireita != null && no.getEsquerda != null)// se o nó possuir dois filhos
             {
                 ArvoreBinaria aux = new ArvoreBinaria();
                 aux = no.getDireita;
                 while (aux.getEsquerda != null)// percorre até chegar ao nó mais a esquerda do nó a direita
                 {
                     aux = aux.getEsquerda;
                 }
                 no.setValor(aux.getValor);  // torna o valor obtido em pai
                 Excluir(aux, aux.getValor); //aplica para o filho do novo pai
                 Console.WriteLine("Valor removido com sucesso!");
                 quantidade--;
             }
             else if (no.getDireita != null)//se só possuir o filho direito
             {
                 SubstituirPaiNo(no.getDireita);
             }
             else if (no.getEsquerda != null)// se só possuir o filho esquerdo
             {
                 SubstituirPaiNo(no.getEsquerda);
             }
             else//se não possuir filhos :(
             {
                 if (no.getValor > no.getAnterior.getValor)
                 {
                     no.getAnterior.setDireita(null);
                 }
                 else
                 {
                     no.getAnterior.setEsquerda(null);
                 }
             }
         }
     }
 }
Beispiel #5
0
 public void SubstituirPaiNo(ArvoreBinaria no)
 {
     if (no == no.getAnterior.getEsquerda)// se for o nó esquerdo
     {
         no.setAnterior(no.getAnterior.getAnterior);
         no.getAnterior.setEsquerda(no);             // o filho esquerdo do pai vira null
     }
     else if (no == no.getAnterior.getDireita)       // se for o nó direito
     {
         no.setAnterior(no.getAnterior.getAnterior); // o filho direito do pai vira null
         no.getAnterior.setDireita(no);
     }
 }
Beispiel #6
0
        public void EmNivel(ArvoreBinaria obj)
        {
            List <ArvoreBinaria> ArrayArvore = new List <ArvoreBinaria>()
            {
                obj
            };
            ArvoreBinaria temp;

            while (ArrayArvore.Count != 0)
            {
                temp = ArrayArvore.First();
                Console.Write("{0} ", temp.getValor);
                if (temp.getEsquerda != null)
                {
                    ArrayArvore.Add(temp.getEsquerda);
                }
                if (temp.getDireita != null)
                {
                    ArrayArvore.Add(temp.getDireita);
                }
                ArrayArvore.RemoveAt(0);
            }
        }
Beispiel #7
0
 public void setEsquerda(ArvoreBinaria no)
 {
     esquerda = no;
 }
Beispiel #8
0
 public void setDireita(ArvoreBinaria no)
 {
     direita = no;
 }
Beispiel #9
0
 public void setAnterior(ArvoreBinaria no)
 {
     anterior = no;
 }