首页 > 其他 > 详细

leetcode1079

时间:2019-06-09 21:08:33      阅读:171      评论:0      收藏:0      [点我收藏+]

这道题似乎有点争议,我的解决方案卡在111/115上,也有其他人遇到和我的一样的问题。

 1 class Solution:
 2     def Subset(self,root,sums,limit):
 3         if root == None:
 4             return 0
 5         temp = root.val
 6         left = self.Subset(root.left,temp+sums,limit)
 7         right = self.Subset(root.right,temp+sums,limit)
 8         
 9         if root.left != None and root.left.left == None and root.left.right == None and left < limit:
10             root.left = None
11         if root.right != None and root.right.left == None and root.right.right == None and right < limit:
12             root.right = None
13         return temp + sums
14 
15     def sufficientSubset(self, root: TreeNode, limit: int) -> TreeNode:
16         sums = self.Subset(root,0,limit)
17         if root.left == None and root.right == None and sums < limit:
18             return None
19         else:
20             return root

这道题目的主要争议出在:删掉原来的叶子节点之后,新形成的叶子节点,如果不够,是否也要被删除。

我上面的代码,是不会删除这些新叶子节点的。貌似这道题目在比赛期间是使用的和我的代码一样的判断,但是后来又改了。

这道题目描述不清楚,给的例子也不具有代表性,所以很混乱。而leetcode上这类题目其实还蛮多的,至少我是这种感觉。

给出另一种可以AC的解决方案:

1 class Solution:
2     def sufficientSubset(self, root, limit):
3         if root.left == root.right is None:
4             return None if root.val < limit else root
5         if root.left:
6             root.left = self.sufficientSubset(root.left, limit - root.val)
7         if root.right:
8             root.right = self.sufficientSubset(root.right, limit - root.val)
9         return root if root.left or root.right else None

参考:https://leetcode.com/problems/insufficient-nodes-in-root-to-leaf-paths/discuss/308326/JavaC%2B%2BPython-Fixed-Recursion

leetcode1079

原文:https://www.cnblogs.com/asenyang/p/10994654.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!