一、题目
二、代码
/**
* 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
{
//回溯
List<String> re_list = new LinkedList<String>();
List<Integer> path = new LinkedList<>();
public void recursion(TreeNode cur, List<Integer> path, List<String> re_list)
{
path.add(cur.val);
//到叶子节点再去组装
if(cur.left == null &&cur.right==null)
{
int i;
int length=path.size();
StringBuilder temp_str = new StringBuilder();
for(i=0;i<length;i++)
{
if(i!=length-1)
{
// System.out.println("str_pro.charAt(i) " +str_pro.charAt(i));
temp_str.append(path.get(i));
temp_str.append("->");
}
else
{
// System.out.println("str_pro.charAt(i) " +str_pro.charAt(i));
temp_str.append(path.get(i));
}
}
re_list.add(temp_str.toString());
}
if(cur.left !=null)
{
recursion(cur.left,path,re_list);
path.remove(path.size() - 1);
}
if(cur.right!=null)
{
recursion(cur.right,path,re_list);
path.remove(path.size() - 1);
}
}
public List<String> binaryTreePaths(TreeNode root)
{
recursion(root,path,re_list);
return re_list;
}
}
三、运行结果
四、附录
二刷
/**
* 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
{
List<String> res = new LinkedList<>();
public void find(TreeNode pro,List<Integer> path)
{
List<Integer> temp_path = new LinkedList<>(path);
//处理流程
temp_path.add(pro.val);
//说明到达了叶子节点
if(pro.left==null && pro.right==null )
{
int i;
int length = temp_path.size();
String temp="";
for(i=0;i<length;i++)
{
if(i!=length-1)
{
//temp+='0'+temp_path.get(i);
//会自动转换的
temp+=temp_path.get(i);
temp+='-';
temp+='>';
}
else
{
temp+=temp_path.get(i);
}
}
res.add(temp);
}
if(pro.left!=null) find(pro.left,temp_path);
if(pro.right!=null) find(pro.right,temp_path);
}
public List<String> binaryTreePaths(TreeNode root)
{
if(root == null) return res;
List<Integer> path = new LinkedList<>();
find(root,path);
return res;
}
}