671. 二叉樹中第二小的節點

WrRan發表於2024-09-12
題目連結 671. 二叉樹中第二小的節點
思路 樹的遍歷(DFS)
題解連結 官方題解
關鍵點 利用樹的性質進行適當剪枝:1. 樹的根節點為全域性最小點 2. 父節點的值為該子樹的最小值
時間複雜度 \(O(n)\)
空間複雜度 \(O(n)\)

程式碼實現:

class Solution:
    def findSecondMinimumValue(self, root: Optional[TreeNode]) -> int:
        answer = -1
        val = root.val

        def dfs(node):
            if node is None:
                return
            
            nonlocal answer
            if answer != -1 and node.val >= answer:
                return
            if node.val > val:
                answer = node.val
                return
            
            dfs(node.left)
            dfs(node.right)
        
        dfs(root)
        return answer

相關文章