leetcode-107 二叉樹的層次遍歷
阿新 • • 發佈:2021-10-16
leetcode-107 二叉樹的層次遍歷
1. 二叉樹的層次遍歷,即通過使用佇列的方法(可用陣列代替),每次儲存某一層的所有節點,然後在一個for迴圈中遍歷該節點,將所有節點的子節點入隊,並記錄下所有節點的值,將他們堆入棧中。
2. example
- 根節點入隊 cur=[3],res=[[3]]
- 遍歷cur,通過中間變數next儲存第二層所有節點,再將所有節點值堆入棧中,用next中元素覆蓋cur,next=[9,20],cur=[9,20],res=[[3],[9,20]]
- 遍歷cur,通過中間變數next儲存第三層所有節點,再將所有節點值堆入棧中,用next中元素覆蓋cur,next=[15,7],cur=[15,7],res=[[3],[9,20],[15,7]]
- 遍歷cur,通過中間變數next儲存第四層所有節點,再將所有節點值堆入棧中,用next中元素覆蓋cur,next=[],cur=[],res=[[3],[9,20],[15,7]]
3. code
class Solution: def levelOrderBottom(self, root: TreeNode) -> List[List[int]]: if not root: return [] cur=[root] stack=[[root.val]] while cur: next=[] val=[] for i in cur: if i.left: next.append(i.left) if i.right: next.append(i.right) cur=next for j in next: val.append(j.val) if val: stack.append(val) return stack[::-1]