(DFS)深度优先搜索,伪代码如下:
void DFS_search(Node root){
if(root==null) return;
visit(root);//例如打印该结点。
root.visited=true;//visited 布尔类型变量,用于标识该结点是否被访问过。
foreach(Node n in root.adjacent){//遍历该结点的所有邻接结点。
if(n.visited==false){
DFS_serach(n);//递归搜索
}
}
}
(BFS)广度优先搜索,伪代码如下:
void BFS_search(Node root){
Queue queue = new Queue();
root.visited = true;
visit(root);//例如打印该结点。
queue.enqueue(root);//加至队列尾部
while(!queue.isEmpty()){
Node r = queue.dequeue();//从队列头部移除
foreach(Node n in r.adjacent){
if(n.visited == false){
visit(n);
n.visited = true;
queue.enqueue(n);
}
}
}
}