leetcode -- Path Sum -- 重点
2015-12-07 15:59
141 查看
https://leetcode.com/problems/path-sum/
对于tree的问题,一定要注意使用dfs,bfs. 这里用dfs就是用preorder traverse。遍历左右subtree。
my code:
这里要注意考虑root没有儿子,只有一个儿子,有两个儿子的情况。当只有一个儿子的时候,就只有一个叶子节点,另外一边可以看做一个false的叶子节点。所以在递归里面要判断root是否为none,如果是none,那么则返回false
更简单的思路,递归减小sum。
参考/article/4982527.html
对于tree的问题,一定要注意使用dfs,bfs. 这里用dfs就是用preorder traverse。遍历左右subtree。
my code:
这里要注意考虑root没有儿子,只有一个儿子,有两个儿子的情况。当只有一个儿子的时候,就只有一个叶子节点,另外一边可以看做一个false的叶子节点。所以在递归里面要判断root是否为none,如果是none,那么则返回false
class Solution(object): def dfs(self, root, mysum, target_sum): if not root:#当root只有一个儿子的时候 return False elif root.left == None and root.right == None: mysum += root.val#这里要把当前root节点的val加上之后再判断 if mysum == target_sum: return True else: return False else: mysum += root.val a = self.dfs(root.left, mysum, target_sum) b = self.dfs(root.right, mysum, target_sum) return a or b def hasPathSum(self, root, sum): """ :type root: TreeNode :type sum: int :rtype: bool """ mysum = 0 if root == None: return False else: return self.dfs(root,mysum, sum)
更简单的思路,递归减小sum。
参考/article/4982527.html
class Solution: # @param root, a tree node # @param sum, an integer # @return a boolean def hasPathSum(self, root, sum): if root == None: return False if root.left == None and root.right == None: return root.val == sum return self.hasPathSum(root.left, sum - root.val) or self.hasPathSum(root.right, sum - root.val)
相关文章推荐
- 日期增加减少
- 一些知识点 保存查阅
- 关于把代码提交至SVN管理报错的问题
- 我心中的MySQL DBA
- vim分屏功能
- Oracle数据库分页查询的几种实现方法
- 使用文件进行数据存储
- O2O、C2C、B2B、B2C的区别在哪里?
- enum类型
- apk更新、下载、安装(一)
- 扣丁学堂——SharedPreferences
- hdu 1520Anniversary party(树形dp)
- Unix Network Programming(12)---listen 函数
- scrollView的键盘取消
- spring 事务属性
- LINUX文本批处理工具
- [学习分享] 在Windows操作系统下如何安装RMySQL包
- OC 关键字
- (android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图
- Environment.Exit(0) 不会触发OnApplicationExit事件