257.二叉树的所有路径
题目
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
输入:
1
/ \
2 3
\
5
输出: ["1->2->5", "1->3"]
方法(深度优先搜索)
对以root为根节点的树进行深度优先遍历,搜索从root到叶节点的路径:
- 如果遍历到了叶子节点,则在当前路径的结尾处添加该节点,并将目前的整条路经加到结果数组中
- 如果当前遍历不是叶子节点,则在当前路径的结尾处添加该节点,继续遍历其子节点
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution{ private List<String> res = new ArrayList<>(); public List<String> binaryTreePaths(TreeNode root) { if(root == null) return res; dfs(root, ""); return res; } public void dfs(TreeNode node, String cur){ if(node == null) return; cur += Integer.toString(node.val); if(node.left == null && node.right == null){ res.add(cur); } else{ cur += "->"; dfs(node.left, cur); dfs(node.right, cur); } } }
|