Comment mettre en œuvre depth-first search (DFS) sur un arbre binaire en java?

Selon ce qui est expliqué dans l'article de wikipedia sur la profondeur de recherche, je pense que DFS sur un arbre binaire est identique à une précommande de la traversée de la racine--gauche-droite (ai-je le droit?).

Mais j'ai juste fait un peu de recherche et a obtenu ce code, dont l'auteur affirme que DFS a besoin d'un arbre à enregistrer si le nœud a été visité avant (ou avons-nous besoin de cela dans le cas d'un graphe?).

//copyright belongs to the original author 
public void dfs() {
    //DFS uses Stack data structure
    Stack stack = new Stack();
    stack.push(this.rootNode);
    rootNode.visited=true;
    printNode(rootNode);
    while(!stack.isEmpty()) {
        Node node = (Node)s.peek();
        Node child = getUnvisitedChildNode(n);
        if(child != null) {
            child.visited = true;
            printNode(child);
            s.push(child);
        }
        else {
            s.pop();
        }
    }
    //Clear visited property of nodes
    clearNodes();
}

Quelqu'un pourrait-il m'expliquer cela?

OriginalL'auteur Accessdenier | 2013-03-06