IEnumerator GeraBuscaEmProfundidade()
    {
        /*
         * Make the initial cell the current cell and mark it as visited
         * While there are unvisited cells
         *  If the current cell has any neighbours which have not been visited
         *      Choose randomly one of the unvisited neighbours
         *      Push the current cell to the stack
         *      Remove the wall between the current cell and the chosen cell
         *      Make the chosen cell the current cell and mark it as visited
         *  Else if stack is not empty
         *      Pop a cell from the stack
         *      Make it the current cell
         */

        btnPausa.interactable = true;
        //btnLimpa.interactable = false;

        raiz.visitada = true;

        Celula atual = raiz;

        //System.Random r = new System.Random();

        setAtualDesceDFS(ref atual, raiz);
        while (atual.pai != null || atual.TemVizinhosNaoVisitados())
        {
            if (atual.TemVizinhosNaoVisitados())
            {
                List <Celula> naoVisitados     = atual.getVizinhosNaoVisitados();
                Celula        vizinhoAleatorio = naoVisitados[r.Next(naoVisitados.Count)];

                vizinhoAleatorio.pai = atual;
                atual.filhos.Add(vizinhoAleatorio);
                atual.removeParedesEntre(vizinhoAleatorio);
                setAtualDesceDFS(ref atual, vizinhoAleatorio); // desce na construção da árvore. A única diferença com Sobe é a cor que pinta
            }
            else if (atual.pai != null)
            {
                setAtualSobeDFS(ref atual, atual.pai); //sempre que sobe na árvore, pinta o antigo de Branco, e ele nunca mais é visitado
            }

            if (!instantaneo)
            {
                yield return(new WaitForSeconds(velocidade));
            }
        }


        Transform fundo = atual.gameObject.transform.GetChild(1);

        fundo.gameObject.GetComponent <MeshRenderer>().material.color = Color.white;


        btnPausa.interactable = false;
        //btnLimpa.interactable = true;
        yield return(null);
    }