美文网首页
34_从上到下打印二叉树 II

34_从上到下打印二叉树 II

作者: 是新来的啊强呀 | 来源:发表于2020-05-26 22:05 被阅读0次

要求:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
思路:与上题相似,使用BFS,其中将本层全部节点打印到一行,并将下一层全部节点加入队列,以此类推,即可分为多行打印

    // 分行从上到下打印二叉树
    public ArrayList<ArrayList<Integer>> printFromTopToBottom(TreeNode0 root){
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        Queue<TreeNode0> queue = new LinkedList<>();
        if(root!=null)queue.add(root);
        while(!queue.isEmpty()){
            ArrayList<Integer> temp = new ArrayList<>();  // 用于存放每一层的节点的值
            // 队列中存储了多少个节点,都遍历出来,相当于每一层的节点给遍历出来
            for(int i=queue.size(); i>0; i--){
                TreeNode0 node = queue.poll();  // queue取出一个节点
                temp.add(node.value);  // 节点值加入到列表中
                if(node.left!=null)queue.add(node.left);
                if(node.right!=null)queue.add(node.right);
            }
            res.add(temp);  // 把该层的列表加入到输出结果的链表中。
        }
        return res;  // 输出结果
}

相关文章

网友评论

      本文标题:34_从上到下打印二叉树 II

      本文链接:https://www.haomeiwen.com/subject/uqyvahtx.html