Path Sum II(leetcode)

来源:互联网 发布:json 数据解析 乱码 编辑:程序博客网 时间:2024/06/03 13:58

题目:

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

题目来源:https://oj.leetcode.com/problems/path-sum-ii/

解题思路:用先序遍历进行深搜

#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 temp,vector<int> &result,vector<vector<int> > &results,int sum){if(root==NULL)return ;temp+=root->val;result.push_back(root->val);if(root->left==NULL && root->right==NULL){if(temp==sum){results.push_back(result);result.pop_back();return ;}}dfs(root->left,temp,result,results,sum);dfs(root->right,temp,result,results,sum);result.pop_back();}vector<vector<int> > pathSum(TreeNode *root, int sum){vector<vector<int> >results;if(root==NULL)return results;vector<int> result;dfs(root,0,result,results,sum);return results;}int main(){TreeNode *root=new TreeNode(-2);//root->left=new TreeNode(2);root->right=new TreeNode(-3);vector<vector<int> > results=pathSum(root,-5);system("pause");return 0;}


0 0
原创粉丝点击