Javaのツリーに対して次のBFSを作成しました。
public class Node
{
public int value;
public ArrayList<Node> myChildren = new ArrayList<Node>();
public Node(int v)
{
value = v;
}
}
public Node breadthFirstSearch(Node root, int value)
{
if(root == null) return null;
Queue<Node> nodesToVisit = new LinkedList<Node>();
nodesToVisit.add(root);
while(nodesToVisit.size() > 0)
{
Node currentNode = nodesToVisit.remove();
if(currentNode.value == value) return currentNode;
nodesToVisit.addAll(currentNode.myChildren);
}
return null;
}
私の質問は、ノードを「訪問」するときに(実行時の複雑さやその他の要因の観点から)重要かどうかif(currentNode.value == value)
です。ノードをキューから取り出した後、またはキューに入れる前に、ノードにアクセスできます。