二叉树中和为某一值的路径

题目描述

  输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径
  思路:回溯法
 1 class Solution {
 2 public:
 3 void DFS(TreeNode *root, vector<vector<int> > &result, vector<int> &tmp, int &sum, int target)
 4 {
 5     tmp.push_back(root->val);
 6     sum=sum+root->val;
 7     if(root->left==NULL && root->right==NULL && sum==target)
 8     {
 9         result.push_back(tmp);
10         tmp.pop_back();
11         sum=sum-root->val;
12         return;
13     }
14     if(root->left)DFS(root->left, result, tmp, sum, target);
15     if(root->right)DFS(root->right, result, tmp, sum, target);
16     tmp.pop_back();
17     sum=sum-root->val;
18 }
19 vector<vector<int> > FindPath(TreeNode* root,int expectNumber)
20 {
21     vector<vector<int> > result;
22     if(root==NULL)return result;
23     vector<int> tmp;
24     int sum=0;
25     DFS(root, result, tmp, sum, expectNumber);
26     return result;
27 }
28 };

 

 

posted @ 2017-12-25 10:46  jeysin  阅读(147)  评论(0编辑  收藏  举报