Problemas com java.lang.ClassCastException

Estou com um problema em meu código sempre que executo aparece o seguinte erro:

Exception in thread “main” java.lang.ClassCastException: [Lbr.uniba.as32a2.yesnet.Nodo; cannot be cast to br.uniba.as32a2.yesnet.Nodo
at br.uniba.as32a2.yesnet.PuzzleJava.main(PuzzleJava.java:64)

o trecho do código que está gerando este erro é o seguinte.
Se alguém puder me ajudar eu agradeço.
Bom dia a todos.

        ArrayList puzzleFila = new ArrayList();
        puzzleFila.add(raiz);
        nodoAtual = (Nodo)puzzleFila.get(0);
        
        comp = nodoAtual.compara(nodoAtual.getEstado(), estadoFinal);
       
         while (puzzleFila != null){
        	nodoAtual = (Nodo) puzzleFila.get(0); //ERRO NESTA LINHA
        	if (comp == 1){
        		break;
        	}else{
        		nodoAtual.expandir();
        	}
        	puzzleFila.add(nodoAtual.getFilho());
        	puzzleFila.remove(0);
        } 

Sugiro vc colocar os tipos na lista:

[code]ArrayList puzzleFila = new ArrayList();
puzzleFila.add(raiz);
nodoAtual = puzzleFila.get(0);

    comp = nodoAtual.compara(nodoAtual.getEstado(), estadoFinal);
   
     while (puzzleFila != null){
    	nodoAtual =  puzzleFila.get(0); //ERRO NESTA LINHA
    	if (comp == 1){
    		break;
    	}else{
    		nodoAtual.expandir();
    	}
    	puzzleFila.add(nodoAtual.getFilho());
    	puzzleFila.remove(0);
    } [/code]

A partir do Java 5 vc já pode especificar o tipo da lista, pra não ter que ficar fazendo casting toda hora. Além de resolver o inconveniente do casting, se houver problema de casting ele mostrará em tempo de compilação e não de execução.