112. 路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
Solution1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| /** * 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) return false; return dfs(root,0,sum); } bool dfs(TreeNode* node,int currentsum, int sum){ currentsum += node->val; if(node && !node->left && !node->right && currentsum == sum) return true; bool a = false,b = false; if(node->left){ a = dfs(node->left,currentsum,sum); } if(node->right){ b = dfs(node->right,currentsum,sum); } return a || b; } };
|
递归终止条件为叶子节点。