1. 广度优先搜索模板C++
1.1 最短路径问题模板
/**
* Return the length of the shortest path between root and target node.
*/
int BFS(Node root, Node target) {
queue<Node> tem_queue;
int step = 0;
tem_queue.push(root);
while(!tem_queue.empty()){
step += 1;
if(tem_queue.front().value = target.value){
return step;
}
if(root.left != nullptr)tem_queue.push(root.left);
if(root.right != nullptr)tem_queue.push(root.right);
tem_queue.pop();
}
return -1;
}
1.2 非重复遍历问题模板
有两种情况你不需要使用哈希集:
你完全确定没有循环,例如,在树遍历中;
你确实希望多次将结点添加到队列中。
### 1.1 最短路径问题模板
```c
/**
* Return the length of the shortest path between root and target node.
*/
int BFS(Node root, Node target) {
//TODO
return -1; // there is no path from root to target
}
本文介绍了C++中广度优先搜索(BFS)的两种模板:最短路径问题和非重复遍历问题。在最短路径问题中,提供了从根节点到目标节点的最短路径长度计算;在非重复遍历问题中,讨论了不使用哈希集的情况。这两个模板适用于树结构和图的遍历,对于解决实际问题如寻找最短路线或避免重复访问节点具有重要意义。
3万+

被折叠的 条评论
为什么被折叠?



