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

一、题目

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

二、思路

二叉树的 广度优先搜索(BFS)。

三、代码

class Solution {
    public int[] levelOrder(TreeNode root) {
        if(root == null) return new int[0];
        Queue<TreeNode> queue = new LinkedList<>(){{ add(root); }};
        ArrayList<Integer> ans = new ArrayList<>();
        while(!queue.isEmpty()) {
            TreeNode node = queue.poll();
            ans.add(node.val);
            if(node.left != null) queue.add(node.left);
            if(node.right != null) queue.add(node.right);
        }
        int[] res = new int[ans.size()];
        for(int i = 0; i < ans.size(); i++)
            res[i] = ans.get(i);
        return res;
    }
}

四、分析

复杂度分析:
  • 时间复杂度 O(N) : N为二叉树的节点数量,即 BFS 需循环 N次。
  • 空间复杂度 O(N): 最差情况下,即当树为平衡二叉树时,最多有 N/2个树节点同时在 queue 中,使用 O(N) 大小的额外空间。

posted @ 2022-12-05 13:49  ImreW  阅读(20)  评论(0)    收藏  举报