給定一個二叉樹和一個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等于目標和。
說明:?葉子節點是指沒有子節點的節點。
示例:?
給定如下二叉樹,以及目標和 sum = 22,? ? ? ? ? ? ? 5
? ? ? ? ? ? ?/ \
? ? ? ? ? ? 4 ? 8
? ? ? ? ? ?/ ? / \
? ? ? ? ? 11 ?13 ?4
? ? ? ? ?/ ?\ ? ? ?\
? ? ? ? 7 ? ?2 ? ? ?1
返回 true, 因為存在目標和為 22 的根節點到葉子節點的路徑 5->4->11->2。。
解題思路:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:bool hasPathSum(TreeNode* root, int sum) {if(root == NULL) return false;if(root->left == NULL && root->right == NULL){if(root->val == sum) return true;return false;} return hasPathSum(root->left, sum-root->val) || hasPathSum(root->right, sum-root->val);}
};
?