257、二叉树的所有路径
具体实现:
1.递归函数参数和返回值
参数:根节点,记录每一条路径的path,存放结果集的result
返回值:无
2.递归终止条件
遍历到叶子节点,也就是这个节点没有左孩子和右孩子时
3.单层递归逻辑
代码:
class Solution { public List<String> binaryTreePaths(TreeNode root) { List<String> res = new ArrayList<>(); if(root == null) return res; List<Integer> paths = new ArrayList<>(); traversal(root,paths,res); return res; } private void traversal(TreeNode root, List<Integer> paths, List<String> res){ paths.add(root.val); if (root.left == null && root.right == null){ StringBuilder sb = new StringBuilder(); for (int i = 0; i < paths.size() - 1; i++){ sb.append(paths.get(i)).append("->"); } sb.append(paths.get(paths.size()-1)); res.add(sb.toString()); return; } if (root.left != null){ traversal(root.left, paths, res); paths.remove(paths.size() -1); } if (root.right != null){ traversal(root.right, paths, res); paths.remove(paths.size() -1); } } }