LeetCode 🟡 1038. Binary Search Tree to Greater Sum Tree
🔗 🟡 1038. Binary Search Tree to Greater Sum Tree 1375
tags: Weekly Contest 135
DFS
樹(Tree)
二元樹(Binary Tree)
BST
題意
給定一個 二元搜尋樹(Binary Search Tree, BST) 的根節點 ,將其每個節點的值替換為樹中所有大於或等於該節點值的節點值之和。
二元搜尋樹滿足以下條件:
- 節點的左子樹只包含鍵值小於該節點鍵值的節點。
- 節點的右子樹只包含鍵值大於該節點鍵值的節點。
- 左右子樹也必須是二元搜尋樹。
約束條件
- ,其中 為樹中節點的數量。
- 。
- 樹中所有節點的值都是 唯一 的。
思路:反向的中序遍歷
根據 BST 的性質,大於等於某個節點值的節點總是存在於該節點的右子樹上,因此可以使用 反向的中序遍歷 ,先遞迴右子樹,然後處理當前節點,最後遞迴左子樹。這樣就能按照從大到小的順序遍歷。
在遞迴過程中,維護一個變數 來累加大於或等於該節點值的節點值之和,並將該節點值替換為 。
複雜度分析
- 時間複雜度:,每個節點訪問一次。
- 空間複雜度:,遞迴深度最差情況下為 。
1 | class Solution: |
1 | class Solution { |
類題
寫在最後
Cover photo is generated by @たろたろ, thanks for their work!
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 十六個天亮!
評論
WalineGiscus