[刷题] 112 Path Sum

要求

  • 给出一个二叉树及数字sum,判断是否存在一条从根到叶子的路径,路径上的所有节点和为sum

实现

  • 转化为寻找左右子树上和为 sum-root 的路径,到达叶子节点时递归终止
  • 注意只有一个孩子时,根节点本身不构成一条路径,如下图sum=5的情况,终止条件是不对的
 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 };
View Code

    

相关

  • 111 Minimum Depth of Binary Tree
  • 404 Sum of Left Leaves
posted @ 2020-04-11 11:43  cxc1357  阅读(108)  评论(0编辑  收藏  举报