[刷题] 112 Path Sum
要求
- 给出一个二叉树及数字sum,判断是否存在一条从根到叶子的路径,路径上的所有节点和为sum
实现
- 转化为寻找左右子树上和为 sum-root 的路径,到达叶子节点时递归终止
- 注意只有一个孩子时,根节点本身不构成一条路径,如下图sum=5的情况,终止条件是不对的
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class Solution { 2 public: 3 bool hasPathSum(TreeNode* root, int sum) { 4 5 if( root == NULL ) 6 return false; 7 8 if( root->left == NULL && root->right == NULL ) 9 return root->val == sum; 10 11 if( hasPathSum( root->left , sum - root->val ) ) 12 return true; 13 14 if( hasPathSum( root->right , sum - root->val ) ) 15 return true; 16 17 return false; 18 } 19 };
相关
- 111 Minimum Depth of Binary Tree
- 404 Sum of Left Leaves