↓快轉到主要內容
  1. LeetCode/

LeetCode 103: Binary Tree Zigzag Level Order Traversal

·1 分鐘· ·
LeetCode Medium Tree Breadth-First-Search Binary-Tree
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: medium 第一次嘗試:2022-11-18

  • 提交紀錄:Accepted(一次通過)

解題思路
#

一樣一層一層收集(Tree 模板二),第 0、2、4… 層由左到右,第 1、3、5… 層反轉。產生下一層的順序不用改,只改記錄的方向。

我的解法
#

class Solution:
    def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        res, level = [], [root] if root else []
        while level:
            vals = [n.val for n in level]
            res.append(vals if len(res) % 2 == 0 else vals[::-1])
            level = [c for n in level for c in (n.left, n.right) if c]
        return res

複雜度
#

時間 O(n),空間 O(w)。

要特別避免的錯誤
#

  • 只反轉記錄的值,不要反轉產生下一層的順序。

面試口說整理
#

我照一般的 BFS 一層一層走,奇數層記錄時反轉,產生下一層的順序不變。時間 O(n)。

相關文章

LeetCode 107: Binary Tree Level Order Traversal II
·1 分鐘
LeetCode Medium Tree Breadth-First-Search Binary-Tree
LeetCode 107 解題筆記:一般的層序遍歷,最後把結果反轉,就是由下往上
LeetCode 102: Binary Tree Level Order Traversal
·1 分鐘
LeetCode Medium Tree Breadth-First-Search Binary-Tree
LeetCode 102 解題筆記:BFS 一次處理一整層,用目前這層的節點產生下一層;空樹回傳空 list
LeetCode 1448: Count Good Nodes in Binary Tree
·1 分鐘
LeetCode Medium Tree Depth-First-Search Breadth-First-Search Binary-Tree
LeetCode 1448 解題筆記:DFS 往下傳路徑上的最大值,節點的值大於等於它就是好節點
LeetCode 199: Binary Tree Right Side View
·1 分鐘
LeetCode Medium Tree Depth-First-Search Breadth-First-Search Binary-Tree
LeetCode 199 解題筆記:層序遍歷,每一層最右邊的節點就是從右邊看得到的
LeetCode 1379: Find a Corresponding Node of a Binary Tree in a Clone of That Tree
·1 分鐘
LeetCode Easy Tree Depth-First-Search Breadth-First-Search Binary-Tree
LeetCode 1379 解題筆記:兩棵樹同時走,原樹走到 target 時,複製樹上的同一個位置就是答案;比的是節點本身
LeetCode 113: Path Sum II
·1 分鐘
LeetCode Medium Backtracking Tree Depth-First-Search Binary-Tree
LeetCode 113 解題筆記:回溯記錄目前的路徑,到葉子時總和等於目標就存一份複本;值可能是負的,不能提早剪枝