leetcode_question_112 Path Sum

 

Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.

For example:
Given the below binary tree and  sum = 22 ,

              5

             / \

            4   8

           /   / \

          11  13  4

         /  \      \

        7    2      1

return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.

DFS:

 

bool findPathSum(TreeNode* root, vector<int> &path, int sum)

    {

    	path.push_back(root->val);

		if(root->left == NULL && root->right == NULL){

			vector<int>::iterator it = path.begin();

			int tmpsum = 0;

			for(; it != path.end(); ++it)

				tmpsum += *it;

			path.pop_back();

			if(tmpsum == sum)

				return true;

			else 

				return false;

		}

		bool flag = false;

		if(root->left)

			flag = findPathSum(root->left,path,sum);

		if(!flag && root->right)

			flag = findPathSum(root->right,path,sum);

		path.pop_back();

		return flag;

	}

	bool hasPathSum(TreeNode *root, int sum) {

        // Start typing your C/C++ solution below

        // DO NOT write int main() function

        if(root == NULL)

			return false;

		vector<int> path;

		return findPathSum(root, path,sum);

    }


 


 

你可能感兴趣的:(LeetCode)