牛客NC15 求二叉树的层序遍历(队列)

题目
在这里插入图片描述
层序遍历需要借助队列的先进先出的性质每一层遍历 只遍历当前层的结点,所以遍历的当前结点要把左右儿子全入队 作为下层结点。

    public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
    
    
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();
        if (root == null) return list;
        Deque<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()){
    
    
            ArrayList<Integer> tmp = new ArrayList<>();
            int size = queue.size();
            for(int i = 0 ;i < size ;i++){
    
    
                TreeNode node = queue.poll();
                tmp.add(node.val);
                if(node.left != null) queue.offer(node.left);
                if(node.right != null) queue.offer(node.right);
            }
            list.add(tmp);
        }
        return list;
    }

猜你喜欢

转载自blog.csdn.net/qq_43434328/article/details/114970665