Problem给定一棵二叉树,每个节点包含一个整数值(该值不是正数就是负数)。设计一个算法,打印节点值之和为给定值的所有路径的数量。注意,路径不一定非要从二叉树的根节点或叶子节点开始或结束,但它的方向必须是向下的(只是从父节点到子节点的方向)。示例:给定以下二叉树,目标sum=22,5/\48//\11134/\/\7251返回:3解释:总和为22的路径是:[5,4,11,2],[5,8,4,5],[4,11,7]Tips:总节点数??<=10000递归思路不一定从根节点开始,所以是必须的对左右子树进行递归,从左右子树的根节点开始向下。代码Python3#定义二叉树节点。#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方案:defpathSum(self,root:TreeNode,sum:int)->int:如果不是root:返回0返回self.dfs(root,sum)+self.pathSum(root.left,sum)+self.pathSum(root.right,sum)defdfs(self,root,sum):#要特判为空,否则下面sum==root.val会报错ifnotroot:return0res=0ifsum==root.val:res+=1res+=self.dfs(root.left,sum-root.val)res+=self.dfs(root.right,sum-root.val)returnres链接GitHub
