[LeetCode]Path Sum
2015-07-18 22:48
302 查看
思路:
深度搜索(这里采用 回溯法)
1,先决条件:找到树根
2,不变式:遍历子node,传递sum和当前和 curSum
3,结束条件:node没有子节点,判断sum 是否等于curSum
4,临界条件:树为空
很简单,一遍过。
深度搜索(这里采用 回溯法)
1,先决条件:找到树根
2,不变式:遍历子node,传递sum和当前和 curSum
3,结束条件:node没有子节点,判断sum 是否等于curSum
4,临界条件:树为空
很简单,一遍过。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool hasPathSum(TreeNode* root, int sum) { if (root == NULL){ return false; } return bfs(root, sum, 0); } bool bfs(TreeNode* node, int sum, int curSum){ if(node->left == NULL && node->right == NULL){ return sum == (curSum + node->val); }else{ if (node->left != NULL){ if ( bfs(node->left, sum, curSum + node->val) ){ return true; } } if (node->right != NULL){ if ( bfs(node->right, sum, curSum + node->val) ){ return true; } } } } };
相关文章推荐
- json 总结
- subversion check out时报错 Can't read from connection 远程主机强迫关闭了一个现有的连接
- ROS进阶学习手记 4 -- 使用Eclipse开发ROS
- 编写一个C++风格的程序,计算输出Fibonacci数列的前20项
- 大数据的经济效益
- C语言的内存管理分析 栈区 代码区 堆区 静态区 常量区
- 题目1196:成绩排序
- Unity中的模式——协同程序介绍
- Android WebView页面加载优化
- CentOS之VI编辑器的常用命令
- COJ 1011: Counting Pixels 暴力不解决问题
- HTML5媒体
- linux 高性能服务器编程
- 虚拟机挂载问题
- 矩阵内存排布
- Reverse Integer
- RT-thread 设备驱动组件之SPI设备
- 使用SVN对GitHub进行版本管理
- RGB图像归一化
- .Net知识点(基础加强)