1. 首先遍历二叉树
将根节点到叶子结点的路径都保存下来,利用一个ArrayList<ArrayList<character>> paths 保存下</character>
public void findPaths(TreeNode root, ArrayList<Character> list, ArratList<ArrayList<Character>> paths){
if(root == null){
return;
}
ArrayList<Character> sublist = new ArrayList<>(list);
sublist.add(Character.forDigit(root.val, 10));
if(root.left == null && root.right == null){
paths.add(sublist);
return;
}else{
findPaths(root.left, sublist, paths);
findPaths(root.right, sublist, paths);
}
} 2. 然后将保存下来的路径相加。
public int sumNumbers(TreeNode root){
if(root == null){
return 0;
}
ArrayList<ArrayList<Character>> paths = new ArrayList<>();
findPaths(root, new ArrayList<Character>(), paths);
int sum = 0;
for(ArrayList<Character> path : paths){
StringBuilder sb = new StringBuilder();
for(char c : path){
sb.applend(c);
}
sum += Integer.parseInt(sb.toString());
}
return sum;
} 


京公网安备 11010502036488号