zoukankan      html  css  js  c++  java
  • 671.Second Minimum Node In a Binary Tree

    题目来源:
     https://leetcode.com/problems/second-minimum-node-in-a-binary-tree
    自我感觉难度/真实难度:
     
    题意:
     
    分析:
     
    自己的代码:
    class Solution:
        def findSecondMinimumValue(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            
            
            def dfs(root):
                if not root:
                    return 
                se.add(root.val)
                if root.left:
                    dfs(root.left)
                if root.right:
                    dfs(root.right)
            se=set([])
            dfs(root)
            a=list(se)
            a.sort()
            if len(a)<2:
                return -1
            return a[1]

    Runtime: 32 ms, faster than 100.00% of Python3 online submissions for Second Minimum Node In a Binary Tree.

    代码效率/结果:
     
    优秀代码:
    def findSecondMinimumValue(self, root):
        self.ans = float('inf')
        min1 = root.val
    
        def dfs(node):
            if node:
                if min1 < node.val < self.ans:
                    self.ans = node.val
                elif node.val == min1:
                    dfs(node.left)
                    dfs(node.right)
    
        dfs(root)
        return self.ans if self.ans < float('inf') else -1

    不用维护所有的值,只关心倒数第二小的数字

    代码效率/结果:
     
    自己优化后的代码:
     
    反思改进策略:

    1.set的初始化不熟练

    2.sort函数的使用,是没有返回值的,只会对原list进行排序

    写题时间时长:
  • 相关阅读:
    cf1108E2 线段树类似扫描线
    poj1185 状态压缩经典题
    cf1110F 离线+树上操作+线段树区间更新
    tarjan求lca :并查集+dfs
    cf1110E 思维
    cf1110d 线性dp
    cf842D 01字典树|线段树 模板见hdu4825
    cf842C 树形dp+gcd函数
    cf581F 依赖背包+临时数组 好题
    hdu5758 思维,树形dp
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10341879.html
Copyright © 2011-2022 走看看