666. Path Sum IV

126 阅读1分钟

要求:计算一个特殊表示的二叉树中所有路径的和

每个整数包含两部分信息:节点的位置和节点的值

` class Solution: def pathSum(self, nums: List[int]) -> int: if not nums: return 0

    # 将树存储为字典,键为位置,值为节点值
    tree = {x // 10: x % 10 for x in nums}
    self.sum = 0

    def dfs(node, cur_sum):
        if node not in tree:
            return
        cur_sum += tree[node]
        depth, pos = divmod(node, 10)
        left = (depth + 1) * 10 + 2 * pos - 1
        right = left + 1
        if left not in tree and right not in tree:  # 检查叶子节点
            self.sum += cur_sum
        else:
            dfs(left, cur_sum)
            dfs(right, cur_sum)

    dfs(nums[0] // 10, 0)
    return self.sum

`