Leetcode112. 路径总和(C语言)

Leetcode112. 路径总和(C语言)

数据结构-树:算法与数据结构参考

题目:
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。例:
输入:[5,4,8,11,null,13,4,7,2,null,null,null,1] 22
输出:true

Leetcode112. 路径总和(C语言)_第1张图片
思路:
递归

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

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

你可能感兴趣的:(数据结构&算法)