113. Path Sum II
来源:互联网 发布:淘宝假币 编辑:程序博客网 时间:2024/06/01 23:47
113. Path Sum II
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:Given the below binary tree and
sum = 22
,5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5]]
前序遍历的递归的方法,未改进之前:有点DFS的味道
void findPath(TreeNode* root, int sum,vector<int> &path,vector<vector<int>> &paths,int currentSum) //前序遍历保证的才是先从根节点开始 { currentSum += root->val; path.push_back(root->val); if(currentSum == sum && root->left == NULL && root->right == NULL) paths.push_back(path); if(root->left != NULL) findPath(root->left,sum,path,paths,currentSum); if(root->right != NULL) findPath(root->right,sum,path,paths,currentSum); path.pop_back(); } vector<vector<int>> pathSum(TreeNode* root, int sum) { if(NULL == root) return vector<vector<int>> (); vector<vector<int>> paths; vector<int> path; int currentSum = 0; findPath(root,sum,path,paths,currentSum); return paths; }改进之后:
vector<vector<int>> pathSum(TreeNode* root, int sum) { vector<vector<int> > paths; vector<int> path; findPaths(root, sum, path, paths); return paths; }void findPaths(TreeNode* node, int sum, vector<int>& path, vector<vector<int> >& paths) { if (!node) return; path.push_back(node -> val); if (!(node -> left) && !(node -> right) && sum == node -> val) paths.push_back(path); findPaths(node -> left, sum - node -> val, path, paths); findPaths(node -> right, sum - node -> val, path, paths); path.pop_back(); }
void findPath(TreeNode* root, int sum,vector<int> &path,vector<vector<int>> &paths) //前序遍历保证的才是先从根节点开始 { //currentSum += root->val; path.push_back(root->val); if(root->val == sum && root->left == NULL && root->right == NULL) paths.push_back(path); if(root->left != NULL) findPath(root->left,sum-root->val,path,paths); if(root->right != NULL) findPath(root->right,sum-root->val,path,paths); path.pop_back(); } vector<vector<int>> pathSum(TreeNode* root, int sum) { if(NULL == root) return vector<vector<int>> (); vector<vector<int>> paths; vector<int> path; findPath(root,sum,path,paths); return paths; }
0 0
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- 113. Path Sum II
- nei'rong
- AChartEngine当用之LineChart(模拟动态生命特征值图)
- POJ1001 Exponentiation
- wampserver修改端口号后,phpMyAdmin进不去,需要修改相关配置文件
- 再次封装 AFNetworking
- 113. Path Sum II
- Android控件RecyclerView实现横向滑动、瀑布流。
- 理解 Linux 条件变量
- HTTP.Debugger.Pro.v7.11-DARKSiDERS
- Could not get lock /var/lib/dpkg/lock
- java之synchronized学习篇
- Gridview事件跟它item布局中的控件事件冲突
- 83. Remove Duplicates from Sorted List
- 投资什么