劍指 Offer 32 - I. 從上到下列印二叉樹(1)BFS
阿新 • • 發佈:2020-12-11
技術標籤: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; } }