# 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:
self._set = set()
def dfs(node):
if node:
self._set.add(node.val)
dfs(node.left)
dfs(node.right)
dfs(root)
self._set.remove(min(self._set))
return min(self._set) if len(self._set) != 0 else -1
https://leetcode.com/problems/second-minimum-node-in-a-binary-tree/