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);
            }
        }
    }
经验分享 程序员 微信小程序 职场和发展