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

LeetCode 199: Binary Tree Right Side View

·1 分鐘· ·
LeetCode Medium Tree Depth-First-Search 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-10-29

  • 提交紀錄:Time Limit Exceeded → Accepted → Runtime Error → Accepted ×2

解題思路
#

從右邊看,每一層只看得到最右邊那個節點(Tree 模板二)。BFS 一層一層走,記錄每層最後一個。

我的嘗試
#

第一版的迴圈沒有前進到下一層,只有一個節點 [6] 就無限迴圈(TLE);一版沒處理空樹。

正確解法
#

class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        res, level = [], [root] if root else []
        while level:
            res.append(level[-1].val)
            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 1448: Count Good Nodes in Binary Tree
·1 分鐘
LeetCode Medium Tree Depth-First-Search Breadth-First-Search Binary-Tree
LeetCode 1448 解題筆記:DFS 往下傳路徑上的最大值,節點的值大於等於它就是好節點
LeetCode 102: Binary Tree Level Order Traversal
·1 分鐘
LeetCode Medium Tree Breadth-First-Search Binary-Tree
LeetCode 102 解題筆記:BFS 一次處理一整層,用目前這層的節點產生下一層;空樹回傳空 list
LeetCode 230: Kth Smallest Element in a BST
·1 分鐘
LeetCode Medium Tree Depth-First-Search Binary-Search-Tree Binary-Tree
LeetCode 230 解題筆記:BST 的中序遍歷是由小到大,迭代中序走到第 k 個就停
LeetCode 98: Validate Binary Search Tree
·1 分鐘
LeetCode Medium Tree Depth-First-Search Binary-Search-Tree Binary-Tree
LeetCode 98 解題筆記:每個節點都有一個合法範圍(下界, 上界),往左走上界變成自己、往右走下界變成自己;只比父子不夠
LeetCode 965: Univalued Binary Tree
·1 分鐘
LeetCode Easy Tree Depth-First-Search Breadth-First-Search Binary-Tree
LeetCode 965 解題筆記:每個節點的值都要等於根的值;遞迴時比的是值,不是遞迴回傳的布林值
LeetCode 993: Cousins in Binary Tree
·1 分鐘
LeetCode Easy Tree Depth-First-Search Breadth-First-Search Binary-Tree
LeetCode 993 解題筆記:堂兄弟要同一層、但父節點不同;DFS 記錄 x 和 y 的深度與父節點再比較