您当前的位置: 首页 > 

IT之一小佬

暂无认证

  • 0浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

二叉树中第二小的节点

IT之一小佬 发布时间:2021-07-27 12:19:41 ,浏览量:0

给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。

更正式地说,root.val = min(root.left.val, root.right.val) 总成立。

给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。

示例 1:

输入:root = [2,2,5,null,null,5,7]
输出:5
解释:最小的值是 2 ,第二小的值是 5 。

示例 2:

输入:root = [2,2,2]
输出:-1
解释:最小的值是 2, 但是不存在第二小的值。

示例代码:

# 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:
        root_value, seconde_min = root.val, -1
        
        def dfs(node):
            nonlocal seconde_min
            if not node:
                return
            if seconde_min != -1 and node.val > seconde_min:
                return
            if node.val > root_value:
                seconde_min = node.val
            
            dfs(node.left)
            dfs(node.right)

        dfs(root)
        return seconde_min
关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0412s