Corrigir o bug na função checkState (não estava verificando a coordenada z). Além disso, descobri qual é o problema do meu método: a busca está indo e voltando na árvore. Eu imaginava que apenas impedindo uma ação contrária à imediatamente aplicada eu evitaria isso, mas não é o caso, pois notei que a busca sai do estado inicial, avança uns três passos e, depois, regressa para o estado inicial (numa única ação). Em seguida o processo se repete, indefinidamente. Precisarei, de alguma forma, é representar os nós que já foram visitados. Já sei: é só incluir um outro argumento na função de busca, com uma lista dos nós já visitados.