257. Binary Tree Paths
2016-04-09 12:55
295 查看
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"]
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
Hide Tags
Tree Depth-first Search
Hide Similar Problems
(M) Path Sum II
BFS Solution:
public List<String> binaryTreePaths(TreeNode root) { List<String> answer = new ArrayList<String>(); if (root != null) searchBT(root, "", answer); return answer; } private void searchBT(TreeNode root, String path, List<String> answer) { if (root.left == null && root.right == null) answer.add(path + root.val); if (root.left != null) searchBT(root.left, path + root.val + "->", answer); if (root.right != null) searchBT(root.right, path + root.val + "->", answer); }
DFS Solution:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<String> binaryTreePaths(TreeNode root) { ArrayList<String> paths = new ArrayList<String>(); dfs(root, new ArrayDeque<Integer>(), paths); return paths; } private void dfs(TreeNode node, Deque<Integer> path, List<String> paths) { if(node == null) return; path.add(node.val); if(node.left == null && node.right == null) { paths.add(mkPath(path)); } dfs(node.left, path, paths); dfs(node.right, path, paths); path.removeLast(); } private String mkPath(Deque<Integer> path) { if(path.isEmpty()) return ""; StringBuilder sb = new StringBuilder(); for(Integer i : path) { sb.append("->").append(i); } return sb.toString().substring(2); } }
相关文章推荐
- java中volatile关键字的含义
- hdu 5439 Ponds(长春网络赛——拓扑排序+搜索)
- POJ 3260 The Fewest Coins(完全背包+多重背包(转化为01背包))
- Syntax error, parameterized types are only available if source level is 1.5 or greater
- java用NLPIR对本地txt进行分词,并将分词结果写入本地
- centos6.5下使用yum安装mysql
- 迷茫中的自己
- 把读过的书记录下来。很多年以后再看看这个书单,应该很有趣~
- nodejs操作mongodb数据库封装DB类
- java项目、包、类
- Android Studio 2.0 稳定版
- Service之TelephonyManager使用
- lua编译环境搭建
- poj 1845 Sumdiv(求逆元)
- C语言之内存对齐
- 在线扫描PDF JPG 图片上面文字
- C#打印小票自带条形码打印
- 【剑指 offer】(十四)—— 调整数组顺序使奇数位于偶数之前
- ArcGIS水文分析工具箱
- chrome设置可以跨域访问