1 广度优先遍历
1.1 概念
①以初始节点V0作为第一层节点,接着访问它。
②然后迭代第一层节点即V0,访问它相邻接的没有访问过的节点比如V1,V2,V1,V2加入到第二层节点
③迭代第二层节点V1,V2,V1,V2依次访问相邻接的没有访问过的节点,重复上述步骤直至所有节点都被访问过为止。
1.2图解
如图所示首先访问根节点v0,并将v0加入到第一层。迭代第一层节点,和vo相邻接的没有访问过的节点有v1和v2,访问v1和v2,并将v1和v2加入到第二层,迭代第二层中的节点v1和v2,和v1相邻接的没有访问过的节点有v3,v4,访问v3和v4,并加入到第三层,和v2相邻接的没有访问过的节点有v5和v6,访问v5和v6,并加入到第三层。
1.3代码
public class BFSDemo {
public void bfs(TreeNode root) {
if(root == null) {
return;
}
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
int size = q.size();
TreeNode temp = null;
while(!q.isEmpty()){
size = q.size();
while(size>0){
temp = q.poll();
if(temp