0️⃣python数据结构与算法学习路线
学习内容:
- 基本算法:枚举、排序、搜索、递归、分治、优先搜索、贪心、双指针、动态规划等…
- 数据结构:字符串(string)、列表(list)、元组(tuple)、字典(dictionary)、集合(set)、数组、队列、栈、树、图、堆等…
题目:
给定一个二叉树,它的每个结点都存放着一个整数值。
找出路径和等于给定数值的路径总数。
路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。
输入输出:
解题思路:
讲解视频
递归方法:
递归函数
- 判断当前结点的值是否与求得值相等
- 不相等再判断到左子树和到右子树是否和求的值-root.val相等
将从root开始 从左子树开始 从右子树开始的都加在一起
算法实现:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def pathSum(self, root: TreeNode, targetSum: int) -> int:
def dfs(node,sum):
ans=0
if not node:
return 0
elif node.val == sum:
ans+=1
else:
ans+=dfs(node.left,sum-node.val)
ans+=dfs(node.right,sum-node.val)
return ans
if not root:
return 0
return dfs(root,targetSum)+self.pathSum(root.left,targetSum)+self.pathSum(root.right,targetSum)
出现问题:
- self.变量 的用法
- self.pathSum而不是dfs?