/// <summary> /// Insere um valor na árvore. não aceita valores repetidos, se o valor já existir ele devolve falso /// </summary> /// <param name="valor"></param> /// <returns> retorna falso se o valor já existir e verdadeiro se o valor for inserido com sucesso</returns> public bool Insere(Animal valor) // insere um valor int { NodoArvore no_aux; if (qtdeNodosInternos == 0) // árvore vazia! { // árvore vazia, devemos criar o primeiro Nodo, que será a raiz no_aux = new NodoArvore(); raiz = no_aux; } else { // localiza onde deve ser inserido o novo nó. no_aux = PesquisaValor(valor.Nome, raiz); if (no_aux.EhInterno()) { throw new Exception("Este animal já existe na árvore!!!!"); } } // este era um Nodo externo e portanto não tinha filhos. // Agora ele passará a ser interno, portanto devemos criar outros 2 // nodos externos (filhos) para ele. no_aux.SetValor(valor); no_aux.SetNoEsquerda(NodoArvore.CriaNoExterno(no_aux)); no_aux.SetNoDireita(NodoArvore.CriaNoExterno(no_aux)); qtdeNodosInternos++; return(true); }