leetcode--Binary Tree Paths
来源:互联网 发布:变音软件ios 版本 编辑:程序博客网 时间:2024/06/02 02:31
题目:Binary Tree Paths
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"]解题思路:二叉树路径最好用的是递归,由于求解为路径所以一般是节点root、当前已有路径res、当前未结束路径sb作为因子进行递归。未结束路径易用StringBuilder表示
One:由于原函数返回值类型,不适合递归。所以需要辅助函数。
public class Solution { public List<String> binaryTreePaths(TreeNode root) { List<String> res = new ArrayList<String>(); if(root==null)return res; StringBuilder sb = new StringBuilder(); findPaths(root,sb,res); return res; } private void findPaths(TreeNode root,StringBuilder sb,List<String> res){ if(root.right==null&&root.left==null){ sb.append(root.val); res.add(sb.toString()); return; } sb.append(root.val); sb.append("->"); int l = sb.length(); if(root.left!=null){ findPaths(root.left,sb,res); } sb.setLength(l); if(root.right!=null){ findPaths(root.right,sb,res); } } }
Two:进一步用String代替StringBuilder
public class Solution { List<String> res = new ArrayList<String>(); public List<String> binaryTreePaths(TreeNode root) { if(root==null)return res; findPaths(root,String.valueOf(root.val)); return res; } private void findPaths(TreeNode root,String path){ if(root.right==null&&root.left==null)res.add(path); if(root.left!=null) findPaths(root.left,path+"->"+root.left.val); if(root.right!=null)findPaths(root.right,path+"->"+root.right.val); } }
Three':在本函数里递归,运用for遍历
public List<String> binaryTreePaths(TreeNode root) { List<String> paths = new LinkedList<>(); if(root == null) return paths; if(root.left == null && root.right == null){ paths.add(root.val+""); return paths; } for (String path : binaryTreePaths(root.left)) { paths.add(root.val + "->" + path); } for (String path : binaryTreePaths(root.right)) { paths.add(root.val + "->" + path); } return paths; }
0 0
- Leetcode: Binary Tree Paths
- [LeetCode] Binary Tree Paths
- [Leetcode]Binary Tree Paths
- leetcode:Binary Tree Paths
- [leetcode] Binary Tree Paths
- Leetcode: Binary Tree Paths
- LeetCode:Binary Tree Paths
- leetcode Binary Tree Paths
- leetcode Binary Tree Paths
- LeetCode:Binary Tree Paths
- LeetCode Binary Tree Paths
- LeetCode Binary Tree Paths
- LeetCode Binary Tree Paths
- LeetCode || Binary Tree Paths
- *LeetCode-Binary Tree Paths
- Binary Tree Paths -- leetcode
- LeetCode---Binary Tree Paths
- leetcode-Binary Tree Paths
- [J2EE]jsp项目中使用UEditor富文本编辑器
- opencv学习笔记(七)从电脑摄像头读入数据
- Retry重试机制
- c# datagridview 使用大全
- 互联网支付-退款中多证书情况下串证书Id
- leetcode--Binary Tree Paths
- 【opencv 官方教程】翻译2 核心功能 上
- 把数组排成最小的数
- OJ 1999: C语言实验——时间间隔
- Android碎裂的粒子效果
- 【协议】IIC总线协议介绍
- 功能性转场动画效果设计
- 线段树学习笔记(单点更新+区间查询最大值+lazy标记+pushdown操作+区间更新+求区间和)
- pip安装scrapy报错 ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org, port=443) Read time out