class ArvoreTrie { private No raiz; public ArvoreTrie(){ raiz = new No(); } public void inserir(String s) throws Exception { inserir(s, raiz, 0); } private void inserir(String s, No no, int i) throws Exception { System.out.print("\nEM NO(" + no.elemento + ") (" + i + ")"); No filho = no.pesquisar(s.charAt(i)); if(filho == null){ System.out.print("--> criando filho(" + s.charAt(i) + ")"); filho = no.inserir(s.charAt(i)); if(i == s.length() - 1){ System.out.print("(folha)"); no.setFilhoFolha(s.charAt(i)); }else{ inserir(s, filho, i + 1); } } else if (filho.folha == false && i < s.length() - 1){ inserir(s, filho, i + 1); } else { throw new Exception("Erro ao inserir!"); } } public boolean pesquisar(String s) throws Exception { return pesquisar(s, raiz, 0); } public boolean pesquisar(String s, No no, int i) throws Exception { boolean resp; No filho = no.pesquisar(s.charAt(i)); if(filho == null){ resp = false; } else if(i == s.length() - 1){ resp = (filho.folha == true); } else if(i < s.length() - 1 ){ resp = pesquisar(s, filho, i + 1); } else { throw new Exception("Erro ao pesquisar!"); } return resp; } public void mostrar(){ mostrar("", raiz); } public void mostrar(String s, No no) { if(no.folha == true){ System.out.println("Palavra: " + (s + no.elemento)); } else { No[] filho = no.getFilho(); for(int i = 0; i < filho.length; i++){ System.out.println("ESTOU EM (" + no.elemento + ") E VOU PARA (" + filho[i].elemento + ")"); mostrar(s + no.elemento, filho[i]); } } } }