Path Sum II - LeetCode 113
2015-06-20 11:30
381 查看
题目描述:
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]
]
Hide Tags Tree Depth-first Search
分析:
思路和Path Sum一样,递归去计算和为sum的路径,但是此题需要记录路径上面的元素,因此需要回溯。
以下是C++实现:
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]
]
Hide Tags Tree Depth-first Search
分析:
思路和Path Sum一样,递归去计算和为sum的路径,但是此题需要记录路径上面的元素,因此需要回溯。
以下是C++实现:
/**////////////////////////////16ms///*/ /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void getSumPath(vector<vector<int>> &res,vector<int> &path, int target,int sum,TreeNode *root){ //sum是当前路径该节点之前的元素的和;target是题目要求的目标和 if(root == NULL) return; sum += root->val; path.push_back(root->val); if(sum == target && root->left == NULL && root->right == NULL){ //到叶子节点,且路径和等于目标值,则添加一条路径到结果集中 res.push_back(path); } getSumPath(res,path,target,sum,root->left); //递归处理左右子树 getSumPath(res,path,target,sum,root->right); path.pop_back();//遍历完一条路径后要回溯 sum-=root->val; // return; } vector<vector<int> > pathSum(TreeNode *root, int target) { vector<vector<int>> res; if(root == NULL) return res; vector<int>path; int sum = 0; getSumPath(res,path,target,sum,root); return res; } };
相关文章推荐
- 32.APP后端处理表情的一些技巧
- 32.APP后端处理表情的一些技巧
- 【PAT】自测3 数组元素循环右移
- Leetcode 之 Word Search
- 【java设计模式】外观模式
- To_10_r_100_8_3---颠倒一个链接表的顺序(递归以及非递归方式)
- linux 进程管理
- 哈理工oj 1348 最短路径 (floyd算法)
- C++ 最大流(push-relable)算法
- 命令行参数(int argc,char* argv[])
- 如何将读书与自己的生活工作结合起来?
- linux 计划任务
- php多重接口的实现方法
- iOS(UIButton使用问题)
- Android 版本更新
- JS字符串方法总结整理
- php正则表达式—工具类的开发
- 线程的五大状态
- Java数据结构及算法实例:插入排序 Insertion Sort
- 定制个性化的 Android Checkbox 图标