广度优先和深度优先不同,广度优先是以一层一层往下走的,直到各个方向走完
我们看看层序遍历 用的是queue队列,先进先出原则。
我们会用到辅助队列,首先根节点进队,然后出队列,根节点的左子树和右子树一次进队列,然后左子树先出队列,左子树的左子树和右子树依次进队列…如此循环,直至树为空为止。
理解的差不多了吧,我们用代码解释一下
这里我们使用offer替代add,用poll替代pop,因为offer和poll遇到错误会输出false而那两种会抛出IllegalStateException异常。
public static void levelOrderTraversal(TreeNode root) {
Queue queue = new LinkedList<>();
queue.offer(root);
while (queue != null) {
// 出队列,并取值
TreeNode poll = queue.poll();
if (root.left != null) {
queue.offer(root.left);
}
if (root.right != null) {
queue.offer(root.right);
}
}
}
class TreeNode{
int value;
TreeNode left;
TreeNode right;
public TreeNode(int value) {
this.value = value;
}
}



