257.二叉树的所有路径
给你一个二叉树的根节点 root
,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
示例 1:
1 2
| 输入:root = [1,2,3,null,5] 输出:["1->2->5","1->3"]
|
Solution
深度遍历,设置一个List
数组,一个字符串,遍历一次就将字符串加入到List数组中去
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| class Solution {
public List<String> binaryTreePaths(TreeNode root) { List<String> paths = new ArrayList<String>(); StringBuilder s = new StringBuilder(); dfs(paths, root, s); return paths; }
private void dfs(List<String> res, TreeNode node, StringBuilder s) { if (node == null) { return; } int len = s.length(); s.append(node.val);
if (node.left == null && node.right == null) { res.add(s.toString()); } else { s.append("->"); if (node.left != null) { dfs(res, node.left, new StringBuilder(s)); } if (node.right != null) { dfs(res, node.right, new StringBuilder(s)); } }
s.setLength(len); } }
|