mysql深度优先遍历储存过程_深度优先遍历

本文介绍了深度优先搜索(DFS)算法在遍历数据库结构中的应用,特别是MySQL中的深度优先遍历储存过程。DFS从一个起始节点开始,访问临近的未访问节点,标记已访问并继续探索,直到所有节点都被访问过。当没有相邻节点可访问时,将回溯到堆栈中的上一节点,直至堆栈为空,遍历结束。示例代码展示了如何实现这个过程,并在完成后重置已访问标志。
摘要由CSDN通过智能技术生成

深度优先搜索算法

深度优先搜索算法(DFS)遍历深度区运动的图并使用堆栈记下要获得的下一个顶点,当一个死尾发生时迭代开始搜索。

abb2824dcbb3051a8e7caa6175fca55b.png

正如上面给出的例子,DFS算法从A遍历到B到C再到D到E,然后到F,最后到G它采用下列规则。

规则 1 − 访问邻近的未访问顶点。标记它已访问。并显示它,最后将其推入堆栈。

规则 2 − 如果没有相邻顶点发现,从堆栈中弹出一个顶点。(它会从栈弹出没有相邻顶点的所有顶点)

规则 3 − 重复第1条和第2条,直到堆栈为空。

void depthFirstSearch(){

int i;

//mark first node as visited

lstVertices[0]->visited = true;

//display the vertex

displayVertex(0);

//push vertex index in stack

push(0);

while(!isStackEmpty()){

//get the unvisited vertex of vertex which is at top of the stack

int unvisitedVertex = getAdjUnvisitedVertex(peek());

//no adjacent vertex found

if(unvisitedVertex == -1){

pop();

}else{

lstVertices[unvisitedVertex]->visited = true;

displayVertex(unvisitedVertex);

push(unvisitedVertex);

}

}

//stack is empty, search is complete, reset the visited flag

for(i = 0;i < vertexCount;i++){

lstVertices[i]->visited = false;

}

}

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值