# Leetcode 112. Path Sum (C語言) - 題目 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. Note: A leaf is a node with no children. - 範例 ``` Example: Given the below binary tree and sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 ``` ```c bool hasPathSum(struct TreeNode* root, int sum){ if(!root)return false; if(!root->left&&!root->right){ sum=sum-root->val; if(sum==0)return true; return false; } if(!root->left){ sum=sum-root->val; return hasPathSum(root->right,sum); } if(!root->right){ sum=sum-root->val; return hasPathSum(root->left,sum); } sum=sum-root->val; return (hasPathSum(root->right,sum)|hasPathSum(root->left,sum)); } ``` 思路:空樹回傳0,左右子點為空代表只有自己是leaf,看sum扣掉是否為0回傳1,否則表示有子樹。 1. 如果左子樹為空,右子樹往下找 2. 如果右子樹為空,左子樹往下找 3. 左右子樹皆不為空,左右子樹皆往下找,回傳值做or。