Arvores

3 respostas
R

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 e 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.
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 alguem 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.

3 Respostas

rodrigo.bossini

Que tipo de árvore é essa? Qual a utilidade dela?

M

primeiro vamos entender oq vc quer…

exemplo com as palavras casa / carro

  • c
    • a
      • r
        • r
          • o
      • s
        • a

bem n consegui representar direito tbm, mas seria isso no JTree???

R

Sim é mesmo isso. Uma maneira comptacta de representar um conjunto de palavras, como um dicionario por exemplo. Para testar se uma palavra pertence ao “dicionario” há N etapas a partir da raiz. Mas até agora ainda não consegui fazer verificar se uma determinada palavra inserida pelo utilizador já existe na arvore e atraves de outro metodo acrescentar uma palavra à arvore.

Criado 4 de junho de 2009
Ultima resposta 4 de jun. de 2009
Respostas 3
Participantes 3