示例#1
0
    }     // fim do método RotacionarParaEsquerda

    private void RotacionarParaDireita(NoArvore no)
    {
        NoArvore filho = no.Esquerda();

        no.Esquerda(filho.Direita());
        filho.Direita(no);

        this.AjustarPai(no, filho);
    }     // fim do método RotacionarParaDireita
示例#2
0
    void RemoverPaiDeDois(NoArvore removido)
    {
        var noSubstituto    = removido.NoAnterior();
        var paiNoSubstituto = this.BuscarPaiDe(noSubstituto);

        if (paiNoSubstituto.Esquerda() == noSubstituto)
        {
            paiNoSubstituto.Esquerda(null);
        }
        else
        {
            paiNoSubstituto.Direita(null);
        }

        noSubstituto.Esquerda(removido.Esquerda());
        noSubstituto.Direita(removido.Direita());

        if (removido != this.raiz)
        {
            var paiNoRemovido = this.BuscarPaiDe(removido);
            if (paiNoRemovido.Esquerda() == removido)
            {
                paiNoRemovido.Esquerda(noSubstituto);
            }
            else
            {
                paiNoRemovido.Direita(noSubstituto);
            }
        }
        else
        {
            this.raiz = noSubstituto;
        }

        removido.Esquerda(null);
        removido.Direita(null);
    }     // fim RemoverPaiDeDois
示例#3
0
    void removerPaiDeUm(NoArvore no)
    {
        var pai   = BuscarPaiDe(no);
        var filho = no.HaDireita()?
                    no.Direita():
                    no.Esquerda();

        if (pai.Esquerda() == no)
        {
            pai.Esquerda(filho);
        }
        else
        {
            pai.Direita(filho);
        }
    }     // fim removerPaiDeUm
示例#4
0
    int contar(Stack <NoArvore> nos, int contagem)
    {
        while (nos.Count != 0)
        {
            NoArvore no = nos.Pop();
            contagem++;

            if (no.HaEsquerda())
            {
                nos.Push(no.Esquerda());
            }
            if (no.HaDireita())
            {
                nos.Push(no.Direita());
            }
        }
        return(contagem);
    }     // fim contar