public int sumNumbers(TreeNode root) {
return DFS(root, 0);
}
public int DFS(TreeNode node, int sum) {
if(node == null) return 0;
int currSum = sum * 10 + node.val; //当前这个节点时的sum
if(node.left == null && node.right == null) {
return currSum;
}
return DFS(node.left, currSum) + DFS(node.right, currSum);
}
这个解法好就好在他把左右子树的和一起加上,而不是一条路径一条路径算。
注意如果这个节点为null,应该返回0,而不是返回sum,因为如果这个节点为null,应该返回给父节点的信息是我这条路径加起来为0,而不是加起来为sum(错误!)。