# 广度优先遍历 1. 保留全部节点状态,占用空间大 2. 无回溯操作(即无入栈、出栈操作),运行速度快 3. 对于解决最短或最少问题特别有效,而且寻找深度小(每个结点只访问一遍,结点总是以最短路径被访问,所以第二次路径确定不会比第一次短) ```cpp #include // 新建一个数据结构,用来描述当前节点状态 typedef struct NodeStateStruct { int para1; int para2; int para3; } NodeState; int main(void) { // 讨论边界条件,比如字符串长度为 0 之类的 // 初始化一个队列 std::queue queue; // 把根节点放进去 queue.push(NodeState {0, 0, 0}); // 开始迭代,当队列为空时结束迭代 NodeState node; while (!queue.empty()) { // 弹出队首 node = queue.front(); queue.pop(); // 遍历队首的所有子节点并把它们放到队尾 queue.push(/* child node 1 */); queue.push(/* child node 2 */); queue.push(/* child node 3 */); } } ```