671. 二叉树中第二小的节点
题目描述
解题思路
1、前序遍历
代码实现
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def findSecondMinimumValue(self, root: TreeNode) -> int:
if not root:
return -1
self.vals = set()
def preorder(root):
if not root:
return
self.vals.add(root.val)
preorder(root.left)
preorder(root.right)
preorder(root)
# min_val = root.val # root min
# second_val = float("inf")
# for val in self.vals:
# if min_val < val:
# second_val = min(second_val, val)
# return second_val if len(self.vals) >= 2 else -1
return sorted(self.vals)[1] if len(self.vals) >= 2 else -1