算法:广度优先搜索(BFS)(最短路径)算法:广度优先搜索(BFS)(最短路径)
我们先看一个案例:
遍历一个树结构,按层次输出树的节点内容,即:欲求 A B C D E F。
实现方式便是从根节点(A)向下遍历,先获取A,其次是A的子节点B和C,其次是B的子节点D……
这种遍历树结构或者图结构的方法被称作广度优先搜索(BFS),与之对应的先遍历到最下层子节点的是深度优先。
起步:BFS基本解法
BFS核心采用队列的数据结构,例如上面的树结构中,解法为:
A进队列->A出队列 B、C进队列->B出队列 D进队列 ->C出队列 E、F进队列-> D、E、F出队列
如果想要区分层次边缘,使用count参数即可。
解法步骤(蓝色部分为已经处理完的节点):
详细解法代码为:
//定义树节点
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public List> levelOrder(TreeNode root) {
List> result = new ArrayList<>();
if (root =