Arvores-ajudem por favor

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:

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.