[Leetcode]-Path Sum, leetcode-pathsum
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.
Hide Tags: Tree, Depth-first Search
Question: Find out if the sum of values from the root node to the leaf path in the binary tree is equal to the given data sum.
Idea: Search for Binary Trees... Recursion is a good method.
1. Provide recursive termination conditions, that is
A: If the node is NULL, false is returned.
B: When the node is a leaf (without a son node), check whether the val of the leaf is equal to sum. If the val is equal, true is returned; otherwise, false is returned.
2. When Condition B is not terminated, continue to recursion.
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */bool hasPathSum(struct TreeNode* root, int sum) { if(root == NULL) return false; if(root->left == NULL && root->right == NULL) return sum == root->val; return (hasPathSum(root->left,sum - root->val) || hasPathSum(root->right,sum - root->val));}
Copyright Disclaimer: This article is an original article by the blogger and cannot be reproduced without the permission of the blogger.