之前没想过要leetcode刷题写个博客,但无奈自己太蠢,有些地方感觉要结合好多个博客才能看懂,所以从今天记录下每天刷题的感想和犯的错误吧~
今天刷leetcode437,2020.3.6
【题目】:路径总和3
刚开始的想法是:对于每一个节点,如5,返回的路径应该是包含5的self.pathSum(root.left, sum - root.val)+self.pathSum(root.right, sum - root.val) 与不包含5的路径 self.pathSum(root.left, sum)+self.pathSum(root.right, sum)之和,完整代码如下:
但无奈提交路径数目多了1
参考网上的博客:https://www.lizenghai.com/archives/18560.html
才发现自己逻辑少了一点,因为不能间断,如果包含第一个节点10,那么在计算是,5这个节点一定要包含。在此例子下多的路径就是10->-2,很显然这是不成立的。因此,对于包含的路径不可以简单递归,重写函数: