问题LeetCode给定一棵仅包含0-9数字的二叉树,每条从根到叶的路径都可以表示一个数。一个例子是root-to-leaf路径1->2->3表示数字123。找到所有root-to-leaf数字的总和。注意:叶子是没有子节点的节点。示例:输入:[1,2,3]1/\23输出:25解释:从根到叶子的路径1->2表示数字12。从根到叶子的路径1->3表示数字13。因此,sum=12+13=25例2:输入:[4,9,0,5,1]4/\90/\51输出:1026解释:根到叶的路径4->9->5代表数字495.Theroot-to-leafpath4->9->1representsthenumber491.Theroot-to-leafpath4->0representsthenumber40.Therefore,sum=495+491+40=1026.问题给定一棵二叉树,每个节点存储一个0-9的数,从根到叶节点的每条路径代表一个数。例如,从根节点到叶节点的路径1->2->3表示数字123。计算从根节点到叶节点生成的所有数字的总和。解释:叶节点是指没有子节点的节点。示例1:输入:[1,2,3]1/\23输出:25解释:从根到叶子节点1->2的路径代表数字12。从根到叶子节点1->3的路径代表数字13。因此,数字之和=12+13=25。示例2:输入:[4,9,0,5,1]4/\90/\51输出:1026解释:从根到叶子节点路径4->9->5代表数字495。从根到叶子节点的路径4->9->1代表数字491。从根到叶子节点的路径4->0代表数字40。因此,数字之和=495+491+40=1026。思想前序遍历想想根节点需要做的事情:将根值加到前一个值*10。不要去想递归的细节,不然会很乱。Python3代码#定义二叉树节点。#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方案:defsumNumbers(self,root:TreeNode)->int:defdfs(root:TreeNode,sumNumber:int)->int:ifnotroot:return0tmpsum=sumNumber*10+root.val#叶子节点ifnotroot.leftandnotroot.right:returntmpsumelse:returndfs(root.left,tmpsum)+dfs(root.right,tmpsum)returndfs(root,0)GitHub链接Python
