129求根到叶子节点数字之和

class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
a = TreeNode(1)
b = TreeNode(2)
c = TreeNode(3)
a.left = b
a.right = c
# 这道题用递归来做,很容易就做出来的
class Solution:
def sumNumbers(self, root: TreeNode) -> int:
# 定义一个变量,用来存储最后的和
self.sum_num = 0
# 判断二叉树是否为空,如果为空,直接返回0
if not root : return 0
def dfs(root,num):
# 判断当前节点是否为空
if not root:return
# 根据题意进行相加。
num = num * 10 + root.val
# 注意这里,不能让他走到节点为空的那一层,那样的话就多算一遍。
if not root.left and not root.right:
self.sum_num = self.sum_num + num
return
# 然后分别递归左右子树
dfs(root.left,num)
dfs(root.right,num)
dfs(root,0)
# 最后返回计算出来的结果
return self.sum_num
A = Solution()
print(A.sumNumbers(a))
posted @ 2020-07-29 18:44  月为暮  阅读(34)  评论(0编辑  收藏