劍指 Offer 32 - I. 從上到下列印二叉樹(BFS)
阿新 • • 發佈:2021-02-08
難度:中等
從上到下打印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。
例如:
給定二叉樹 [3,9,20,null,null,15,7],
[3,9,20,15,7]
解題思路:
無需多言,廣度優先搜尋(BFS)走起。
python程式碼:
# BFS
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
import queue
class Solution:
def levelOrder(self, root: TreeNode) -> List[int]:
if not root: return []
que = queue.Queue()
que.put(root)
res = []
while not que.empty():
node = que.get()
if node.left:
que.put(node. left)
if node.right:
que.put(node.right)
res.append(node.val)
return res
複雜度分析:
- 時間複雜度 O ( N ) O(N) O(N): N N N是節點的數目,我們需要遍歷所有節點;
- 空間複雜度 O ( N ) O(N) O(N):最差的情況,當樹是完全二叉樹的情況下,佇列需要同時儲存 N / 2 + 1 N/2+1 N/2+1。