一刷剑指Offer_32:从上到下打印二叉树

1、题目描述:
在这里插入图片描述
2、思路分析:

本题考查的就是层序遍历,但是与之前的题不同的是,本题返回的是一个数组,因此需要将集合转换为数组后再返回。

3、代码实现:

class TreeNode {
     int val;
     TreeNode left;
     TreeNode right;
     TreeNode(int x) { val = x; }
 }

class Solution {

    public int[] levelOrder(TreeNode root) {
        /**
         * 本题考查的就是二叉树的层序遍历,按照每一层进行遍历,bfs
         * 1、先按层序遍历写出来,队列
         * 2、将集合转换成数组
         */
        if(root==null) return new int[0];

        List<Integer> list = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);

        while(!queue.isEmpty()){
            TreeNode node = queue.poll();
            list.add(node.val);
            if(node.left!=null){
                queue.add(node.left);
            }
            if(node.right!=null){
                queue.add(node.right);
            }
        }

        //将集合转换为数组,返回
        int[] array = new int[list.size()];
        for(int i=0;i<array.length;i++){
            array[i] = list.get(i);
        }
        return array;
    }
}
发布了716 篇原创文章 · 获赞 130 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_42764468/article/details/105362994