You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求LeetCode 112. Path Sum正确递归解法及现有代码错误原因

代码问题分析

你的代码存在3个关键错误,导致测试用例无法通过:

  • 未处理空树边界:当输入的root为null时,直接访问root.left会触发空指针异常,LeetCode中存在空树的测试用例。
  • 未接收递归返回值:你调用左右子树的hasPathSum方法后,没有捕获它的返回结果,无论子树是否存在符合条件的路径,最终都会走到最后的return false,正确逻辑是只要左右子树任意一个返回true,当前方法就应该返回true。
  • 边界判断逻辑不全:即使当前节点是叶子节点,也需要判断targetSum - root.val不等于0的情况,这种场景下也应该直接返回false而不是走后续分支。
修正后代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean hasPathSum(TreeNode root, int targetSum) {
        // 处理空树场景
        if(root == null) {
            return false;
        }
        // 叶子节点判断逻辑
        if(root.left == null && root.right == null) {
            return targetSum - root.val == 0;
        }
        // 只要左右子树任意一条路径满足条件就返回true
        return hasPathSum(root.left, targetSum - root.val) || hasPathSum(root.right, targetSum - root.val);
    }
}

内容的提问来源于stack exchange,提问作者DerStrebsame

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:15:04