本文主要是介绍《leetCode》:Sum Root to Leaf Numbers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
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.
思路
第一步:找出所有的从root到叶子节点的路径
第二步:求和
实现代码如下:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
public class Solution {private List<List<Integer>> res=new ArrayList<List<Integer>>();//用来保存所有的路径public int sumNumbers(TreeNode root) {if(root==null){return 0;}//第一步:找出所有的路径sumNumbersHelper(root,new ArrayList<Integer>());//求和return sumAllList(res);}private int sumAllList(List<List<Integer>> listList) {if(listList==null){return 0;}int sum=0;int listSum=0;for(List<Integer> temp:listList){listSum=0;//注意:要在这里初始化为零for(Integer num:temp){listSum=listSum*10+num;}sum+=listSum;}return sum;}private void sumNumbersHelper(TreeNode root,List<Integer> list) {if(root==null){return;}list.add(root.val);if(root.left==null&&root.right==null){//到达叶子节点,保存此条路径 res.add(list);return ;}else{sumNumbersHelper(root.left,new ArrayList<Integer>(list));sumNumbersHelper(root.right,new ArrayList<Integer>(list));}}
}
小结
原以为这道题自己做不出来的,写了写着思路就开了,太开兴了,哈哈
这篇关于《leetCode》:Sum Root to Leaf Numbers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!