JAVA广度优先遍历(层序遍历)
关于深度遍历和创建树可以看这个
广度优先和深度优先不同,广度优先是以一层一层往下走的,直到各个方向走完 我们看看层序遍历 用的是queue队列,先进先出原则
用图解释一下:
理解的差不多了吧,我们用代码解释一下
这里我们使用offer替代add,用poll替代pop,因为offer和poll遇到错误会输出false而那两种会抛出IllegalStateException异常。
public static void levelOrderTraversal(TreeNode root){
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);//将根输入到队列中
while(!queue.isEmpty()){//循环到队列空
TreeNode node = queue.poll();//删除,并取值
System.out.println(node.data);
if(node.leftChild != null){//检查是否有左节点,如果有,加入队列中
queue.offer(node.leftChild);
}
if(node.rightChild != null){//检查右节点
queue.offer(node.rightChild);
}
}
}
