112 Path Sum

本文介绍了一种使用深度优先搜索(DFS)的方法来判断二叉树中是否存在从根节点到叶子节点的路径,使得沿途经过的节点值之和等于给定的目标和。通过递归方式实现,详细展示了如何检查边界条件并更新剩余目标值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:(深度优先搜索遍历,注意边界条件处理,以及初始根为空的情况)
class Solution {
public:
    bool hasPathSum(TreeNode *root, int sum) {
        bool f=false;
        if(root==NULL)
            return false;
        if(root->left==NULL&&root->right==NULL){
            if(sum==root->val)
                return true;
            else
                return false;
        }
        if(root->left!=NULL){
            f=f||hasPathSum(root->left, sum-root->val);
        }
        if(root->right!=NULL){
            f=f||hasPathSum(root->right, sum-root->val);
        }
        return f;
    }
};

这段代码是一个深度优先搜索算法,用于求解一个二维地图中的最大路径和。 首先,代码中通过一个循环逐行读取输入,并将每行转换为整数列表后添加到input_map中。 然后,定义了一个dfs函数用于进行深度优先搜索。该函数接受四个参数:input_map(二维地图),pathsum(当前路径和),i和j(当前位置的行列坐标)。在函数内部,首先获取input_map的行数和列数,然后将当前位置的值加到pathsum上,并将当前位置的值置为0,表示已经访问过。接着,使用一个循环遍历当前位置的上、下、左、右四个邻居位置,如果邻居位置在地图范围内且值大于0,则递归调用dfs函数。最后,返回pathsum作为当前路径的最大值。 接下来,初始化一个变量res为0,用于记录最大路径和。然后,通过两个嵌套循环遍历input_map中的每个位置,并判断该位置的值是否大于0。如果大于0,则调用dfs函数计算从该位置开始的路径的最大和,并将结果与res比较取较大值。 最后,打印出最大路径和res。 请注意,这段代码没有处理输入错误的情况,如输入的行数、列数不匹配等。另外,由于代码中没有给出具体的输入,无法确定输入的格式和含义,因此无法对代码的功能进行准确评价。如果有具体的输入和预期输出,可以提供给我,我可以帮助您进一步分析和调试代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值