📅  最后修改于: 2023-12-03 14:56:53.226000             🧑  作者: Mango
给定一个二叉树,每个节点的值都是其子节点中的最小值。请编写一个函数,找到该二叉树中第二个唯一最小的值。如果不存在第二个最小值,则返回 -1。
示例1:
输入:
2
/ \
2 5
/ \
5 7
输出: 5
解释: 根节点的值为 2 ,其子节点中的最小值为 2 和 5 。第二个唯一的最小值是 5 。因此输出 5 。
示例2:
输入:
2
/ \
2 2
输出: -1
解释: 根节点的值为 2 ,其子节点中的最小值为 2 。在整棵树中只有一个最小值,因此返回 -1 。
def findSecondMinimumValue(root: TreeNode) -> int:
if not root:
return -1
def dfs(node, val):
if not node:
return -1
if node.val > val:
return node.val
left = dfs(node.left, val)
right = dfs(node.right, val)
if left == -1:
return right
if right == -1:
return left
return min(left, right)
res = dfs(root, root.val)
return res if res != -1 else -1
返回的是markdown格式的代码片段。