示例#1
0
        :type sum: int
        :rtype: int
        """
        path = [0]
        ans = [0]

        def dfs(node, s):
            if not node:
                return
            s += node.val
            for x in path:
                if s - x == sum:
                    ans[0] += 1
            path.append(s)
            dfs(node.left, s)
            dfs(node.right, s)
            path.pop()

        dfs(root, 0)
        return ans[0]


if __name__ == '__main__':
    from utils import TreeNode
    f = Solution().pathSum
    root = TreeNode.make_tree([10, 5, -3, 3, 2, None, 11, 3, -2, None, 1])
    assert f(root, 8) == 3
    assert f(
        TreeNode.make_tree([5, 4, 8, 11, None, 13, 4, 7, 2, None, None, 5, 1]),
        22) == 3