1.题目描述
2.思路
(1)因为是求二叉树的所有路径
(2)然后是带固定格式的
所以我们要把每个节点的整数数值换成字符串数值
(3)首先先考虑根节点,也就是要满足节点不为空
返回递归的形式dfs(根节点,“”,路径列表的路径)
比如根节点是root=1,所以返回dfs(1,“1”,1)
(4)如果不是根节点(但是也要满足系欸但不为空)
先把每个节点的数字转换成字符串
然后把当前节点是叶子节点的加入到路径列表的路径中
(5)如果不是叶子节点,则要继续遍历
格式就是先根节点-》左节点->再右节点进行递归遍历## 3.代码实现
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> paths=new ArrayList<>();
if(root!=null)//根节点不为空
{
dfs(root,"",paths);//返回根节点,也就是路径
}
return paths;
}
private void dfs(TreeNode node,String path,List<String>paths)
{
if(node!=null)
{
path+=Integer.toString(node.val);//将数字节点的值转换成路径上的字符串数字
if(node.left==null&&node.right==null){
//如果当前是 叶子节点
paths.add(path);//把路劲加入结果列表
}
else{
path+="->";//不是叶子节点,自顶向下遍历,这边的path是字符串
dfs(node.left,path,paths);
dfs(node.right,path,paths);
}
}
}
}