import java.util.ArrayList; import java.util.List; /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<String> binaryTreePaths(TreeNode root) { List<String> res=new ArrayList<String>(); if(root==null) return res; List<Integer> temp=new ArrayList<Integer>(); dfs(root,res,temp); return res; } public void dfs(TreeNode root,List<String> res,List<Integer> temp) { temp.add(root.val); if(root.left==null&&root.right==null) { //表示此时已经走到了叶子节点,直接进行temp的压入即可 String newOne=""; for(int i=0;i<temp.size();i++) { if(i==0) newOne+=temp.get(i); else { newOne+="->"; newOne+=temp.get(i); } } res.add(newOne); return ; } if(root.left!=null) { dfs(root.left,res,temp); temp.remove(temp.size()-1); } if(root.right!=null) { dfs(root.right,res,temp); temp.remove(temp.size()-1); } } }