《leetCode》:Sum Root to Leaf Numbers
2016-02-28 20:05
316 查看
题目
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)); } } }
小结
原以为这道题自己做不出来的,写了写着思路就开了,太开兴了,哈哈相关文章推荐
- DGGame序-回归Blog重构自我
- Java中的包访问权限
- 容器类概述(1)
- 1052 Linked List Sorting
- c++强类型枚举enum class NEWTYPE
- ASP.NET MVC学习之模型绑定(2)
- [MySQL] 事务隔离级别
- Java 中InputStream与Reader的区别
- OpenStack快速安装
- ASP.NET MVC学习之模型绑定(1)
- 函数返回一个指针
- 【BZOJ3511】土地划分【最小割】
- 怎样在 ubuntu 和 debian 中通过命令行管理 KVM
- 怎样在 ubuntu 和 debian 中通过命令行管理 KVM
- Loadrunner简述
- ASP.NET MVC学习之模型模板篇
- ASP.NET MVC学习之视图篇(2)
- hdu 2639 (第k小的01背包)
- 委托子窗体刷新父窗体
- 同源策略详解及绕过