LeetCode 437:路径总和 III 解法精讲

问题描述

LeetCode 437. 路径总和 III 要求统计二叉树中路径和等于目标值的路径数量。路径不需要从根节点开始,也不需要在叶子节点结束,但必须是从父节点指向子节点的方向。

解题思路

暴力递归法

遍历二叉树的每个节点,以该节点为起点向下搜索所有可能的路径,统计路径和等于目标值的数量。这种方法简单直观,但时间复杂度较高。

def pathSum(root, targetSum):
    if not root:
        return 0
    
    def dfs(node, current_sum):
        if not node:
            return 0
        current_sum += node.val
        count = 1 if current_sum == targetSum else 0
        count += dfs(node.left, current_sum)
        count += dfs(node.right, current_sum)
        return count
    
    return dfs(root, 0) + pathSum(root.left, targetSum) + pathSum(root.right, targetSum)

前缀和优化法

利用前缀和的思想优化时间复杂度。在遍历二叉树时,记录从根节点到当前节点的路径和,并通过哈希表快速查找是否存在满足条件的前缀和。

def pathSum(root, targetSum):
    from collections import defaultdict
    prefix_sum = defaultdict(int)
    prefix_sum[0] = 1
    
    def dfs(node, current_sum):
        if not node:
            return 0
        current_sum += node.val
        count = prefix_sum.get(current_sum - targetSum, 0)
        prefix_sum[current_sum] += 1
        count += dfs(node.left, current_sum)
        count += dfs(node.right, current_sum)
        prefix_sum[current_sum] -= 1
        return count
    
    return dfs(root, 0)

复杂度分析

暴力递归法

  • 时间复杂度:O(n^2),其中 n 是二叉树的节点数。最坏情况下,二叉树退化为链表。
  • 空间复杂度:O(n),递归栈的深度取决于树的高度。

前缀和优化法

  • 时间复杂度:O(n),每个节点只需遍历一次。
  • 空间复杂度:O(n),哈希表存储前缀和的数量。

边界条件与注意事项

  • 空树直接返回 0。
  • 目标值可能为负数,不能提前终止搜索。
  • 哈希表需要初始化 prefix_sum[0] = 1,表示路径和为 0 的情况。

测试用例

# 示例 1
root = TreeNode(10)
root.left = TreeNode(5)
root.right = TreeNode(-3)
root.left.left = TreeNode(3)
root.left.right = TreeNode(2)
root.right.right = TreeNode(11)
root.left.left.left = TreeNode(3)
root.left.left.right = TreeNode(-2)
root.left.right.right = TreeNode(1)
targetSum = 8
assert pathSum(root, targetSum) == 3

总结

路径总和 III 是一个典型的二叉树路径问题,暴力递归法易于理解但效率较低,前缀和优化法通过空间换时间显著提升性能。掌握这两种方法有助于解决类似问题。

BbS.okacop092.info/PoSt/1120_054045.HtM
BbS.okacop093.info/PoSt/1120_008747.HtM
BbS.okacop094.info/PoSt/1120_757510.HtM
BbS.okacop095.info/PoSt/1120_771945.HtM
BbS.okacop096.info/PoSt/1120_082334.HtM
BbS.okacop097.info/PoSt/1120_483265.HtM
BbS.okacop098.info/PoSt/1120_159254.HtM
BbS.okacop099.info/PoSt/1120_055233.HtM
BbS.okacop114.info/PoSt/1120_981538.HtM
BbS.okacop829.info/PoSt/1120_002137.HtM
BbS.okacop092.info/PoSt/1120_067335.HtM
BbS.okacop093.info/PoSt/1120_825017.HtM
BbS.okacop094.info/PoSt/1120_126284.HtM
BbS.okacop095.info/PoSt/1120_945898.HtM
BbS.okacop096.info/PoSt/1120_305002.HtM
BbS.okacop097.info/PoSt/1120_968249.HtM
BbS.okacop098.info/PoSt/1120_919149.HtM
BbS.okacop099.info/PoSt/1120_413486.HtM
BbS.okacop114.info/PoSt/1120_876305.HtM
BbS.okacop829.info/PoSt/1120_007168.HtM
BbS.okacop092.info/PoSt/1120_486431.HtM
BbS.okacop093.info/PoSt/1120_843590.HtM
BbS.okacop094.info/PoSt/1120_519410.HtM
BbS.okacop095.info/PoSt/1120_885818.HtM
BbS.okacop096.info/PoSt/1120_062258.HtM
BbS.okacop097.info/PoSt/1120_785014.HtM
BbS.okacop098.info/PoSt/1120_474457.HtM
BbS.okacop099.info/PoSt/1120_547110.HtM
BbS.okacop114.info/PoSt/1120_546360.HtM
BbS.okacop829.info/PoSt/1120_877690.HtM
BbS.okacop092.info/PoSt/1120_585242.HtM
BbS.okacop093.info/PoSt/1120_559539.HtM
BbS.okacop094.info/PoSt/1120_020124.HtM
BbS.okacop095.info/PoSt/1120_232922.HtM
BbS.okacop096.info/PoSt/1120_084180.HtM
BbS.okacop097.info/PoSt/1120_438635.HtM
BbS.okacop098.info/PoSt/1120_552035.HtM
BbS.okacop099.info/PoSt/1120_696134.HtM
BbS.okacop114.info/PoSt/1120_649740.HtM
BbS.okacop829.info/PoSt/1120_221561.HtM
BbS.okacop092.info/PoSt/1120_588913.HtM
BbS.okacop093.info/PoSt/1120_500870.HtM
BbS.okacop094.info/PoSt/1120_677079.HtM
BbS.okacop095.info/PoSt/1120_640859.HtM
BbS.okacop096.info/PoSt/1120_098135.HtM
BbS.okacop097.info/PoSt/1120_496776.HtM
BbS.okacop098.info/PoSt/1120_464902.HtM
BbS.okacop099.info/PoSt/1120_958463.HtM
BbS.okacop114.info/PoSt/1120_635322.HtM
BbS.okacop829.info/PoSt/1120_250786.HtM
BbS.okacop092.info/PoSt/1120_256223.HtM
BbS.okacop093.info/PoSt/1120_289447.HtM
BbS.okacop094.info/PoSt/1120_960064.HtM
BbS.okacop095.info/PoSt/1120_249669.HtM
BbS.okacop096.info/PoSt/1120_653864.HtM
BbS.okacop097.info/PoSt/1120_678776.HtM
BbS.okacop098.info/PoSt/1120_512568.HtM
BbS.okacop099.info/PoSt/1120_881553.HtM
BbS.okacop114.info/PoSt/1120_212049.HtM
BbS.okacop829.info/PoSt/1120_122389.HtM
BbS.okacop092.info/PoSt/1120_511772.HtM
BbS.okacop093.info/PoSt/1120_672717.HtM
BbS.okacop094.info/PoSt/1120_435078.HtM
BbS.okacop095.info/PoSt/1120_122942.HtM
BbS.okacop096.info/PoSt/1120_842879.HtM
BbS.okacop097.info/PoSt/1120_685820.HtM
BbS.okacop098.info/PoSt/1120_568714.HtM
BbS.okacop099.info/PoSt/1120_047391.HtM
BbS.okacop114.info/PoSt/1120_500571.HtM
BbS.okacop829.info/PoSt/1120_985062.HtM
BbS.okacop092.info/PoSt/1120_686328.HtM
BbS.okacop093.info/PoSt/1120_816686.HtM
BbS.okacop094.info/PoSt/1120_833159.HtM
BbS.okacop095.info/PoSt/1120_715828.HtM
BbS.okacop096.info/PoSt/1120_976082.HtM
BbS.okacop097.info/PoSt/1120_069209.HtM
BbS.okacop098.info/PoSt/1120_041561.HtM
BbS.okacop099.info/PoSt/1120_088870.HtM
BbS.okacop114.info/PoSt/1120_964462.HtM
BbS.okacop829.info/PoSt/1120_636013.HtM

#牛客AI配图神器#

全部评论

相关推荐

11-04 10:30
已编辑
门头沟学院 研发工程师
开心小狗🐶:“直接说答案”
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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