剑指 Offer 32 - I. 从上到下打印二叉树

剑指 Offer 32 - I. 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9   20
   / \
    15  7

返回:

[3,9,20,15,7]

提示:

节点总数 <= 1000

做题思路:这道题,与剑指 Offer 32 - II. 从上到下打印二叉树 II有点类似,可以相互参考,尤其是BFS的代码有点模板的感觉。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int[] levelOrder(TreeNode root) {
        if(root == null)//空树返回空数组 
            return new int[0];
        //通过一个队列,BFS实现按层次遍历二叉树
        Queue<TreeNode> queue = new LinkedList<>();
        //先放根节点入队列
        queue.add(root);
        //设置一个动态数组用添加节点
        List<Integer> res = new ArrayList<>();
        while (!queue.isEmpty()) {
            root = queue.poll();
            res.add(root.val);
            //左右节点入队列
            if (root.left != null) queue.add(root.left);
            if (root.right != null) queue.add(root.right);
        }
        //将ArrayList转换成int数组来返回
        int[] array = new int[res.size()];
        for (int i = 0; i < array.length; i++) {
            array[i] = res.get(i);
        }
        return array;
    }
}
posted @ 2021-08-10 11:40  RainsX  阅读(54)  评论(0编辑  收藏  举报