1 class Solution(object): 2 def __init__(self): 3 self.li = list() 4 self.sums = 0 5 6 def Trace(self,root): 7 if root != None: 8 self.li.append(root.val) 9 10 if root.left != None: 11 self.Trace(root.left) 12 if root.right != None: 13 self.Trace(root.right) 14 if root.left == None and root.right == None: 15 cursum = 0 16 p = 0 17 for i in range(len(self.li)-1,-1,-1): 18 cursum += int(pow(2,p)) * self.li[i] 19 p += 1 20 self.sums += cursum 21 22 self.li.pop(-1) 23 24 def sumRootToLeaf(self, root: TreeNode) -> int: 25 self.Trace(root) 26 return self.sums
使用深度优先,本代码是先序遍历,记录从根到叶子的每条路径的元素值。当遇到叶子节点的时候,按照路径上的节点顺序转化成二进制并计算。遍历整棵树后,就得到了全部路径的总和。