671. 二叉树中第二小的节点

题目链接 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
posted @ 2024-09-12 01:34  WrRan  阅读(4)  评论(0编辑  收藏  举报