Java:
class Solution {
public int sumNumbers(TreeNode root) {
return sumNum(root, 0);
}
public int sumNum(TreeNode root, int sum){
if(root == null) return 0;
if(root.left == null && root.right == null) return sum*10 + root.val;
return sumNum(root.left, sum*10+root.val) + sumNum(root.right, sum*10+root.val);
}
}
Python:
class Solution:
def sumNumbers(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
stack, res = [(root, root.val)], 0
while stack:
node, val = stack.pop()
if not node.left and not node.right:
res+=val
if node.left:
stack.append((node.left, val*10+node.left.val))
if node.right:
stack.append((node.right, val*10+node.right.val))
return res