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(); }
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); }
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(); }