You need to enable JavaScript to run this app. 求解二叉树路径和时有没有更优雅的递归退出方式?
优惠活动
大模型
产品
解决方案
定价
更多

求解二叉树路径和时有没有更优雅的递归退出方式?

优化实现方案

你可以直接利用递归返回值的短路特性实现提前终止,不需要额外定义类标记变量,同时还能修复原代码未判断叶子节点的逻辑问题:

class Solution:
    def hasPathSum(self, root: TreeNode, targetSum: int) -> bool:
        # 空节点直接返回不匹配
        if not root:
            return False
        # 到达叶子节点,判断剩余和是否匹配当前节点值
        if not root.left and not root.right:
            return targetSum == root.val
        # 短路或特性:左子树找到匹配就不会执行右子树递归,自动提前终止
        return self.hasPathSum(root.left, targetSum - root.val) \
            or self.hasPathSum(root.right, targetSum - root.val)

优化说明

  • 无需额外标记变量:通过布尔返回值传递匹配结果,匹配成功后直接短路后续递归,没有多余的函数调用,真正实现提前终止
  • 逻辑更简洁:不用维护当前路径和变量,每次递归传入扣除当前节点值后的剩余目标和即可
  • 修复原代码漏洞:原代码只要路径累计和等于目标值就会标记成功,没有判断是否为叶子节点,不符合「根到叶子路径」的题目要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:03:01