1. 程式人生 > 其它 >劍指 Offer 32 - I. 從上到下列印二叉樹(1)BFS

劍指 Offer 32 - I. 從上到下列印二叉樹(1)BFS

技術標籤:LeetCode

從上到下打印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。

例如:
給定二叉樹:[3,9,20,null,null,15,7],

3
/ \
9 20
/ \
15 7
返回:

[3,9,20,15,7]

解法一:BFS

時間複雜度 O(N): N為二叉樹的節點數量,即 BFS 需迴圈 N次。
空間複雜度 O(N): 最差情況下,即當樹為平衡二叉樹時,最多有N/2 個樹節點同時在 queue 中,使用 O(N) 大小的額外空間。

class Solution {
    public int[] levelOrder(TreeNode root) {
        if(root == null) return new int[0];
        Queue<TreeNode> queue = new LinkedList<>();
        queue.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;
    }
}