[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)