0
点赞
收藏
分享

微信扫一扫

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

沐之轻语 2022-03-11 阅读 76

描述

给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。
1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点
2.叶子节点是指没有子节点的节点
3.路径只能从父节点到子节点,不能从子节点到父节点
4.总节点数目为n
例如:
给出如下的二叉树,sum=22,
请添加图片描述
返回true,因为存在一条路径 5\to 4\to 11\to 25→4→11→2的节点值之和为 22
数据范围:
1.树上的节点数满足0≤n≤10000
2.每 个节点的值都满足 0∣val∣≤1000
要求:空间复杂度O(n),时间复杂度O(n)
进阶:空间复杂度 O(树的高度),时间复杂度 O(n)

示例1
输入:{5,4,8,1,11,#,9,#,#,2,7},22
返回值:true

示例2
输入:{1,2},0
返回值:false

示例3
输入:{1,2},3
返回值:true

示例4
输入:{},0
返回值:false

代码

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return bool布尔型
     */
    bool hasPathSum(TreeNode* root, int sum) {
        // write code here
        if(!root)
            return false;
        sum=sum-(root->val);
        if(root->left==nullptr&&root->right==nullptr){
            if(sum==0){
                return true;
            }else
                return false;
        }
        return hasPathSum(root->left, sum)||hasPathSum(root->right, sum);
    }
};
举报

相关推荐

0 条评论