首页 > 代码库 > [LeetCode] Path Sum II 深度搜索

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

 

 

Hide Tags
 Tree Depth-first Search
 

   这题其实就是深度搜索,代码:
技术分享
#include <vector>#include <iostream>using namespace std;/** * Definition for binary tree */struct TreeNode {    int val;    TreeNode *left;    TreeNode *right;    TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public:    vector<vector<int> > ret;    vector<int> nowPath;    vector<vector<int> > pathSum(TreeNode *root, int sum) {        ret.clear();        nowPath.clear();        if(root==NULL)  return ret;        help_f(root,sum);        return ret;    }    void help_f(TreeNode *root,int sum)    {        if(root==NULL)  return ;        nowPath.push_back(root->val);        help_f(root->left,sum - root->val);        help_f(root->right,sum - root->val);        if(root->left==NULL&&root->right==NULL&&sum==root->val)            ret.push_back(nowPath);        nowPath.pop_back();    }};int main(){    return 0;}
View Code

 

[LeetCode] Path Sum II 深度搜索