Arvores

araqh

Membro
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 é que 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 com comentarios:

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.
 
Back
Topo