Ir para conteúdo
Fórum Script Brasil
  • 0

Arvores


araqh

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...