题解 | #二叉树中和为某一值的路径(一)#

二叉树中和为某一值的路径(一)

https://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c

C语言, 递归

bool recursion(struct TreeNode* node, int target){

    static int sum = 0;

    int lastNode;

    if(!node)return false;  //根节点为空

    sum += node->val;       //将当前节点的值加入sum

    // if(sum > target)return false;        //bug:节点有负数,因此不能判断当前值大于目标值就退出

    if(sum == target && !node->left && !node->right)return true;    //到达叶子节点并且当前值与目标值相等,返回true

    if(node->left){     //如果左子节点存在,进行递归

        if(true == recursion(node->left, target)) return true;  //如果递归返回true,则继续返回true,直到最上层跳出函数

        sum -= node->left->val; //运行到这里表示上一次递归返回了,需要减去上一次递归的node节点的值

    }

    if(node->right){

        if(true == recursion(node->right, target)) return true;

        sum -= node->right->val;

    }

    return false;   //运行到这里,说明当前node左右子节点的路径都不满足返回false,跳回当前节点的父节点。(如果到根节点则退出函数返回false)

}

bool hasPathSum(struct TreeNode* root, int sum ) {

    // write code here

    return recursion(root, sum);    //输入根节点与目标值进行递归

}

全部评论

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
AI求职实录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务