예제 #1
0
        public void Remover(int NoRemover)
        {
            Buscar(NoRemover);
            var noPai = NoEncontrado.GetPai();

            if (NoEncontrado != null)
            {
                if (NoEncontrado.GetFilhoEsq() == null && NoEncontrado.GetFilhoDir() == null)
                {
                    if (noPai.GetFilhoEsq() == NoEncontrado)
                    {
                        noPai.InserirFilhoEsq(null);
                        Console.WriteLine("\nNó removido!");
                        return;
                    }
                    else
                    {
                        noPai.InserirFilhoDir(null);
                        Console.WriteLine("\nNó removido!");
                        return;
                    }
                }

                if (NoEncontrado.GetFilhoEsq() != null && NoEncontrado.GetFilhoDir() != null)
                {
                    Console.WriteLine("\nO nó não pode ser removido!");
                    return;
                }

                No filhoExistente;
                if (NoEncontrado.GetFilhoEsq() != null)
                {
                    filhoExistente = NoEncontrado.GetFilhoEsq();
                }
                else
                {
                    filhoExistente = NoEncontrado.GetFilhoDir();
                }

                if (noPai.GetFilhoEsq() == NoEncontrado)
                {
                    noPai.InserirFilhoEsq(filhoExistente);
                    Console.WriteLine("\nNó removido!");
                }
                else
                {
                    noPai.InserirFilhoDir(filhoExistente);
                    Console.WriteLine("\nNó removido!");
                }
            }
            NoEncontrado = new No();
        }
예제 #2
0
        public int Grau(int No)
        {
            Buscar(No);
            if (NoEncontrado.GetFilhoEsq() != null && NoEncontrado.GetFilhoDir() != null)
            {
                return(2);
            }
            if (NoEncontrado.GetFilhoEsq() != null || NoEncontrado.GetFilhoDir() != null)
            {
                return(1);
            }

            NoEncontrado = new No();
            return(0);
        }
예제 #3
0
        public void Inserir(int?Pai, int valor, char TipoFilho)
        {
            if (Pai == null && TipoFilho == 'R')
            {
                Raiz = new No(valor);
                Console.WriteLine("Raiz inserida!");
                return;
            }

            Buscar(valor);
            if (NoEncontrado.GetValor() == valor)
            {
                Console.WriteLine("O Nó a ser inserido já existe!");
                return;
            }

            Buscar(Pai.Value);
            if (TipoFilho == 'E' && NoEncontrado.TemFilhoEsq())
            {
                Console.WriteLine("Já possui filho esquerdo!");
                return;
            }
            if (TipoFilho == 'D' && NoEncontrado.TemFilhoDir())
            {
                Console.WriteLine("Já possui filho direito!");
                return;
            }

            if (TipoFilho == 'E')
            {
                NoEncontrado.InserirFilhoEsq(new No(valor, NoEncontrado));
                Console.WriteLine("Filho esquerdo inserido!");
            }
            if (TipoFilho == 'D')
            {
                NoEncontrado.InserirFilhoDir(new No(valor, NoEncontrado));
                Console.WriteLine("Filho direito inserido!");
            }

            NoEncontrado = new No();
        }