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

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

技術標籤:LeetCodebfs

難度:中等

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

例如:

給定二叉樹 [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