# 二叉樹的層序遍歷 ## 概述 與前中後序遍歷不同,層序遍歷是屬於**廣度優先搜索**,使用**Queue**先進先出的特性來實現層序遍歷。 ## 層序遍歷的順序  ## 詳細步驟 1. 創建 Queue 2. 把根節點放入 Queue 3. 開始迴圈,條件設置為 Queue 為空時停止 4. 每層迴圈裡開始第二層迴圈,只走訪當次迴圈Queue內所存在的元素 5. 每次從 Queue 取出一個元素,加入答案中 6. 因為 Queue 先進先出的特性,所以先查看左節點是否存在,如果存在,就加入 Queue 7. 再來查看右節點是否存在,如果存在,就加入 Queue 8. 持續 3 -> 4 -> 5 -> 6 -> 7 直到 Queue 為空為止 ```python=! # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: queue = [root] res = [] while queue: level_res = [] for i in range(len(queue)): node = queue.pop(0) if node: level_res.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) if level_res: res.append(level_res) return res ``` 2023.7.21 AC ```python=! # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: output = [] if not root: return output queue = [root] while queue: length = len(queue) ans = [] for i in range(length): node = queue.pop(0) ans.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) if ans: output.append(ans) return output ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up