题目来源:
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进行排序
写题时间时长:
来源:https://www.cnblogs.com/captain-dl/p/10341879.html