Пример #1
0
        public void Inserir(int valor)
        {
            Noh newNo = new Noh();

            newNo.setValor(valor);
            if (Root.getAnterior == null && root.getValor == null)
            {
                root.setValor(valor);
                root.setDireita(null);
                root.setEsquerda(null);
            }
            else
            {
                Noh 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++;
        }
Пример #2
0
 public Noh Busca(Noh no, int valor)
 {
     if (no == null)
     {
         Console.WriteLine("Não Achei! " + valor.ToString());
         return(null);
     }
     else
     {
         if (valor == no.getValor)
         {
             Console.WriteLine("Achei! " + valor.ToString());
             return(no);
         }
         else if (valor < no.getValor)
         {
             Busca(no.getEsquerda, valor);
         }
         else
         {
             Busca(no.getDireita, valor);
         }
     }
     return(null);
 }
Пример #3
0
 public void PosOrdem(Noh no)
 {
     if (no != null)
     {
         EmOrdem(no.getEsquerda);
         EmOrdem(no.getDireita);
         Console.Write(no.getValor + "  ");
     }
 }
Пример #4
0
 public int Altura(Noh no)
 {
     if ((no == null) || (no.getEsquerda == null && no.getDireita == null))
     {
         return(0);
     }
     else
     {
         return(1 + (Maior(Altura(no.getEsquerda), Altura(no.getDireita))));
     }
 }
Пример #5
0
 public void Excluir(Noh 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
             {
                 Noh aux = new Noh();
                 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);
                 }
             }
         }
     }
 }
Пример #6
0
 public void SubstituirPaiNo(Noh 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);
     }
 }
Пример #7
0
        public void print(Noh no, int level)
        {
            int i;

            if (no == null)
            {
                Padding("  ", level);
                Console.WriteLine(" ");
            }
            else
            {
                print(no.getDireita, level + 1);
                Padding("  ", level);
                Console.Write(no.getValor);
                print(no.getEsquerda, level + 1);
            }
        }
Пример #8
0
        public void Imprimir(Noh no)
        {
            Queue <Noh> q = new Queue <Noh>();

            q.Enqueue(no);


            while (q.Count != 0)
            {
                Console.WriteLine((no = q.Dequeue() as Noh).getValor);

                if (no.getEsquerda != null)
                {
                    q.Enqueue(no.getEsquerda as Noh);
                }
                if (no.getDireita != null)
                {
                    q.Enqueue(no.getDireita as Noh);
                }
            }
        }
Пример #9
0
 public void setEsquerda(Noh no)
 {
     esquerda = no;
 }
Пример #10
0
 public void setDireita(Noh no)
 {
     direita = no;
 }
Пример #11
0
 public void setAnterior(Noh no)
 {
     anterior = no;
 }