Estou a criar uma classe que permita construir uma árvore de letras e estou mesmo a precisar de um empurrãozinho.
A ideia é regrupar as palavras numa árvore na qual cada arco representa uma letra. Uma palavra seria então representada pelo caminho da raíz até ao nó que contem o valor "fimPalavra". É no array que estou a fazer tudo, não utiliso a Jtree.
Na verdade trata-se de uma maneira comptacta de representar um conjunto de palavras, como um dicionario por exemplo.
O meu problema é quero acrescentar dois métodos ao meu código aqui em baixo. Um metodo para acrecentar uma palavra à árvore e outro para testar se uma determinada palavra já existe na árvore. Se alguém tiver alguma ideia ou indicação por minima que seja, não hesite pois será certamente util.
Aqui vai o meu código:
import java.io.*;
import java.util.*;
public class ArvoreLetra
{
char letra;
boolean fimPalavra;
ArrayList letrasSeguintes;
/* constructor */
ArvoreLetra(char c)
{
letra = c;
fimPalavra = false;
letrasSeguintes = new ArrayList();
}
/* permite modificar a variável fimPalavra
para indicar se uma subArvore corresponde ou não ao fim de uma palavra*/
void setFimPalavra(boolean b)
{
fimPalavra = b;
}
/*testa si a árvore corresponde ao fim de uma palavra, ultima letra*/
boolean isFimDePalavra()
{
return fimPalavra;
}
/* testa se o caractere c é uma das letras a seguir à letra corrente */
boolean contemLetra(char c)
{
for (int i=0; i<letrasSeguintes.size(); i++)
{
ArvoreLetra a = (ArvoreLetra)letrasSeguintes.get(i);
if (a.letra == c) return true;
}
return false;
}
/* retorna a subArvore (letra seguinte) que corresponde ao caractere c */
ALettre getSubArvore(char c)
{
for (int i=0; i<letrasSeguintes.size();i++)
{
ArvoreLetra a = (ArvoreLetra)letrasSeguintes.get(i);
if (a.letra == c) return a;
}
return null;
}
/*void acrescentarPalavra(String palavra)
{
}
boolean contemPalavra(String palavra)
{
}*/
}
Pergunta
araqh
Olá a todos,
Estou a criar uma classe que permita construir uma árvore de letras e estou mesmo a precisar de um empurrãozinho.
A ideia é regrupar as palavras numa árvore na qual cada arco representa uma letra. Uma palavra seria então representada pelo caminho da raíz até ao nó que contem o valor "fimPalavra". É no array que estou a fazer tudo, não utiliso a Jtree.
Na verdade trata-se de uma maneira comptacta de representar um conjunto de palavras, como um dicionario por exemplo.
O meu problema é quero acrescentar dois métodos ao meu código aqui em baixo. Um metodo para acrecentar uma palavra à árvore e outro para testar se uma determinada palavra já existe na árvore. Se alguém tiver alguma ideia ou indicação por minima que seja, não hesite pois será certamente util.
Aqui vai o meu código:
import java.io.*; import java.util.*; public class ArvoreLetra { char letra; boolean fimPalavra; ArrayList letrasSeguintes; /* constructor */ ArvoreLetra(char c) { letra = c; fimPalavra = false; letrasSeguintes = new ArrayList(); } /* permite modificar a variável fimPalavra para indicar se uma subArvore corresponde ou não ao fim de uma palavra*/ void setFimPalavra(boolean b) { fimPalavra = b; } /*testa si a árvore corresponde ao fim de uma palavra, ultima letra*/ boolean isFimDePalavra() { return fimPalavra; } /* testa se o caractere c é uma das letras a seguir à letra corrente */ boolean contemLetra(char c) { for (int i=0; i<letrasSeguintes.size(); i++) { ArvoreLetra a = (ArvoreLetra)letrasSeguintes.get(i); if (a.letra == c) return true; } return false; } /* retorna a subArvore (letra seguinte) que corresponde ao caractere c */ ALettre getSubArvore(char c) { for (int i=0; i<letrasSeguintes.size();i++) { ArvoreLetra a = (ArvoreLetra)letrasSeguintes.get(i); if (a.letra == c) return a; } return null; } /*void acrescentarPalavra(String palavra) { } boolean contemPalavra(String palavra) { }*/ }Obrigado.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.