《leetCode》:Binary Tree Paths
2016-07-10 21:23
316 查看
题目
Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 / \ 2 3 \ 5 All root-to-leaf paths are: ["1->2->5", "1->3"]
思路
利用递归即可解决。求当前节点的左子树和右子树的路径,然后将当前节点加入到这些路径的前面。实现代码如下:
package com.wrh.leetcode; import java.util.ArrayList; import java.util.List; public class BinaryTreePaths { public List<String> binaryTreePaths(TreeNode root) { List<List<Integer>> res = binaryTreePathHelper(root); List<String> paths = new ArrayList<String> (); for(List<Integer> list : res){ StringBuilder sb = new StringBuilder(); for(int i=0;i<list.size();i++){ if(i==list.size()-1){ sb.append(list.get(i)); } else{ sb.append(list.get(i)).append("->"); } } paths.add(sb.toString()); } return paths; } private List<List<Integer>> binaryTreePathHelper(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>>() ; if(root==null){ return res; } if(root.left==null&&root.right==null){//叶子节点 List<Integer> list = new ArrayList<Integer>(); list.add(root.val); res.add(list); return res; } else { List<List<Integer>> leftRes = binaryTreePathHelper(root.left) ; List<List<Integer>> rightRes = binaryTreePathHelper(root.right) ; for(List<Integer> list : leftRes){ list.add(0,root.val); res.add(list); } for(List<Integer> list : rightRes){ list.add(0,root.val); res.add(list); } return res; } } public static void main(String[] args){ TreeNode t = new TreeNode(3); TreeNode t2 = new TreeNode(5); TreeNode t3 = new TreeNode(6); t.left = t2 ; t.right = t3 ; List<String> list = new BinaryTreePaths().binaryTreePaths(t); for(String str:list){ System.out.println(str); } } }
相关文章推荐
- 乐乐音乐-KSC歌词图片生成器
- 丑数
- Ext初学
- TCP链接中主动断开链接netstat观察可能出现的状态流转是:----腾讯2016研发工程师在线模拟笔试题
- 中国剩余定理 互质与非互质版本
- 嵌入式开发第二日(man 手册、linux基本命令、vim编辑器、代码编译过程、编译工具、基本数据类型、控制流)
- spark shell 启动出错问题
- 什么是语义化标签?
- 【usaco 2013 feb Bronze】计算周长
- JVM性能调优jps、jstack、jmap、jhat、jstat、hprof命令详解
- 实现函数 makeClosures,调用之后满足如下条件: 1、返回一个函数数组 result,长度与 arr 相同 2、运行 result 中第 i 个函数,即 result[i](),结果与 fn
- Hello World
- BZOJ 1798 [Ahoi2009]Seq 维护序列seq
- 一个互联网研发团队的标准配置
- 一个互联网研发团队的标准配置
- 一个互联网研发团队的标准配置
- Oracle Database 创建HR模式
- 树的直径
- Javascript 强制类型转换函数
- 课后练习1-Armstrong数