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

    写题时间时长:
  • 相关阅读:
    Redis-其他命令
    Redis-发布与订阅
    C#使用命令编译代码
    Redis有序集合操作
    Redis散列操作
    设置ul水平居中
    Redis集合操作
    Redis列表操作
    java连SQLServer失败 java.lang.ClassNotFoundException:以及 javax.xml.bind.JAXBException
    SQLServer 用法简例
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10341879.html
Copyright © 2011-2022 走看看