Path Sum II

来源:互联网 发布:2017淘宝双11销售冠军 编辑:程序博客网 时间:2024/06/03 16:56

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]]


题目解析:

(1)主要运用的是深度遍历的思想。

(2)因为路径上面的数字有正有负,所以只是在根节点上面判断是否为target。


#include <iostream>#include <vector>using namespace std;struct TreeNode {    int val;    TreeNode *left;     TreeNode *right;    TreeNode(int x) : val(x), left(NULL), right(NULL) {}};void dfs(TreeNode *root,int sum,int target,vector<vector<int> > &res,vector<int> &save){if(root->left == NULL && root->right==NULL){if(root->val + sum == target){save.push_back(root->val);res.push_back(save);save.pop_back();return;}else{return;}}else{save.push_back(root->val);}if(root->left!=NULL){dfs(root->left,sum+root->val,target,res,save);}if(root->right!=NULL)dfs(root->right,sum+root->val,target,res,save);save.pop_back();}vector<vector<int> > pathSum(TreeNode *root, int sum) {vector<vector<int> > res;if(root == NULL)return res;vector<int> save;dfs(root,0,sum,res,save);return res;}int main(void){system("pause");return 0;}


0 0
原创粉丝点击