给你一个二叉树的根节点 root
,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
思路:
先编辑所有节点,记录每一个节点的路径;
判断当前节点是否为叶子节点,如果是,则将当前节点的路径存储起来。
public static List<String> binaryTreePaths(TreeNode root){List<String> res=new ArrayList<>(); //叶子节点的路径if(root==null) return res;List<Integer> path=new ArrayList<>(); //所有节点的路径findPath(root,path,res);return res;}//记录每一条路径,当节点是否为叶子节点时,存入res中public static void findPath(TreeNode node,List<Integer> path,List<String> res){//记录每一个节点的路径path.add(node.val);//叶子节点,将该节点的路径,存入res中if(node.left==null && node.right==null){StringBuilder sb=new StringBuilder(); //记录路径for(int i=0;i<path.size()-1;i++){sb.append(path.get(i)).append("->");}sb.append(path.get(path.size()-1)); //记录最后一个节点的路径res.add(sb.toString());return;}if(node.left!=null){findPath(node.left,path,res);path.remove(path.size()-1);}if(node.right!=null){findPath(node.right,path,res);path.remove(path.size()-1);}}