import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @return int整型
*/
public int sumNumbers(TreeNode root) {
//如果根节点是空,直接返回0即可
if (root == null) {
return 0;
}
//两个栈,一个存储的是节点,一个存储的是节点对应的值
Stack
Stack
//把根节点和根节点的值分别压入两个栈中
nodeStack.add(root);
valueStack.add(root.val);
//全局的,统计所有路径的和
int sum = 0;
while (!nodeStack.isEmpty()) {
//当前节点和当前节点的值同时出栈
TreeNode node = nodeStack.pop();
int value = valueStack.pop();
if (node.left == null && node.right == null) {
//如果当前节点是叶子结点,说明找到了一条路径,把这条路径的值加入到全局变量res中
sum += value;
} else {
//如果不是叶子节点就执行下面的操作
if (node.right != null) {
//把子节点和子节点的值分别加入到栈中,这里子节点的值就是父节点的值*10+当前节点的值
nodeStack.push(node.right);
valueStack.push(value * 10 + node.right.val);
}
if (node.left != null) {
nodeStack.push(node.left);
valueStack.push(value * 10 + node.left.val);
}
}
}
return sum;
}
}