题目
Given a binary tree containing digits from 0-9
only, each root-to-leaf path could represent a number.
An example is the root-to-leaf path 1->2->3
which represents the number 123
.
Find the total sum of all root-to-leaf numbers.
For example,
1 / \ 2 3
The root-to-leaf path 1->2
represents the number 12
.
The root-to-leaf path 1->3
represents the number 13
.
Return the sum = 12 + 13 = 25
.
思路
这个题目典型的递归题目,关于递归注意与回溯区别开来。在递归的时候用一个变量s保存到当前节点时,前面节点的和 , 当一个节点是叶子节点的时候,将当前和累加入到总和中去,递归返回的条件是节点为空。
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private int total = 0;
public int sumNumbers(TreeNode root) {
helper(root,0);
return total;
}
public void helper(TreeNode root,int s){
if(root == null) return;
s = s*10 + root.val;
if(root.left == null && root.right == null){
total += s;
return;
}
helper(root.left,s);
helper(root.right,s);
}
}
PS:最近在刷题,希望看到自己刷到300+的时候是个什么水平吧。
吐槽:优快云编辑更新了,字体更改大小,部分文字格式没起作用。