leetcode做题笔记112. 路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

思路一:递归

bool hasPathSum(struct TreeNode *root, int sum) {
    if (root == NULL) {
        return false;
    }
    if (root->left == NULL && root->right == NULL) {
        return sum == root->val;
    }
    return hasPathSum(root->left, sum - root->val) ||
           hasPathSum(root->right, sum - root->val);
}

分析:

本题要判断是否根节点到叶子节点的值之和等于目标数,可以使用递归将目标数不断减去中间路径二叉树所在位置的值,最后当遍历到空节点时判断数是否等于减过的目标数,最后返回答案,注意每个叶子节点都有可能存在路径,左右子树得到结果用||连接

总结:

本题考察递归二叉树的操作,利用递归向左右子树遍历直到叶子节点,再判断是否路径总和为目标值得到答案

你可能感兴趣的:(递归,二叉树,leetcode,笔记,算法)