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进行排序

    写题时间时长:
  • 相关阅读:
    [树形DP]Luogu P1131 [ZJOI2007]时态同步
    [状压DP]JZOJ 1303 骑士
    [DFS]JZOJ 1301 treecut
    [最小费用最大流]JZOJ 4802 探险计划
    [KMP][倍增求LCA]JZOJ 4669 弄提纲
    [DP]JZOJ 1758 过河
    列表生成式和生成器表达式
    协程函数
    生成器
    迭代器
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10341879.html
Copyright © 2011-2022 走看看