Zgodnie z wyjaśnieniem w the wikipedia article about depth-first search, myślę, że DFS na drzewie binarnym jest identyczny z preorder traversal root - left - right (mam rację?).Jak zaimplementować wyszukiwanie z głębokim początkiem (DFS) w drzewie binarnym w języku Java?
Ale właśnie zrobiłem małe wyszukiwanie i otrzymałem ten kod, którego autor twierdzi, że DFS potrzebuje drzewa do zapisania, czy węzeł był wcześniej odwiedzany (czy też potrzebujemy tego w przypadku wykresu?).
// 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();
}
Czy ktoś może to wyjaśnić?
można sprawdzić obraz w prawą rękę na tej [LINK] (http://en.wikipedia.org/wiki/Depth-first_search)? – Accessdenier