这轮关键词

  • 只要求判断有无,如果是打印路径 就要注意数据结构
  • 递归的入口 和 出口 ,以及 递归的子结构处理,都是难点
  • 【】 如何结合常见的 树的深度遍历,基础还是第一位, 需要增加一个参数
  • 【】处理路径和,不仅仅是加法, 可以用减法,到叶子就是0值

代码


class Solution {
public:
    bool deepSearch(TreeNode* root, int sum){
        //001 check
        if(root ==NULL)
            return false;
        
        //收下买路钱

        sum = sum - root->val;

        //002 found it 
        if(root->left == NULL && root->right ==NULL && sum == 0){
            return true;
        }

        //003 子结构
        return deepSearch(root->left, sum ) || deepSearch(root->right,sum);
    }
    bool hasPathSum(TreeNode* root, int sum) {
        // write code here
        if(root == NULL ){
            return false;
        }

        return deepSearch(root,sum);
    }
};