码迷,mamicode.com
首页 > 其他好文 > 详细

Path Sum II

时间:2015-08-12 16:53:41      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:leetcode

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

啊采用DFS方法,每次到达叶子节点返回,并且恢复原来的值!

代码如下:

class Solution {
public:
   vector<vector<int>> pathSumVector;
	int depthSum1;
	vector<vector<int>> pathSum(TreeNode* root, int sum) 
	{
		 depthSum1=0;
		 if (root==NULL)
		 {
			 return pathSumVector;
		 }
		 vector<int> solution;
		 DFS_sum(root,sum,solution);
		 return pathSumVector;
	}
	void DFS_sum(TreeNode* root, int sum, vector<int> &solution)
	{
		if (root)
		{
			if (root->left==NULL&&root->right==NULL)
			{
				if (depthSum1+root->val==sum)
				{
					solution.push_back(root->val);
					pathSumVector.push_back(solution);
					solution.pop_back();
				}
					return;
			}
			depthSum1+=root->val;
			solution.push_back(root->val);
			DFS_sum(root->left,sum,solution);
			DFS_sum(root->right,sum,solution);
			depthSum1-=root->val;
			solution.pop_back();
		}
	}
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

Path Sum II

标签:leetcode

原文地址:http://blog.csdn.net/q286989429/article/details/47446185

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!