二叉树的所有路径

public List<String> binaryTreePaths(TreeNode root) {
    List<String> paths=new ArrayList<>();
    if(root==null){
        return paths;
    }
    List<Integer> values=new ArrayList<>();
    backtrack(root,values,paths);
    return paths;
}

//values 记录从根节点到叶子节点
//paths 记录路径
private void backtrack(TreeNode root, List<Integer> values,List<String> paths){
    if(root==null){
        return;
    }
    values.add(root.val);
    if(root.left==null && root.right==null){ // 到达叶子节点
        paths.add(buildPath(values));
    }else{
        backtrack(root.left,values,paths);
        backtrack(root.right,values,paths);
    }
    values.remove(values.size()-1);
}

private String buildPath(List<Integer> values){
    StringBuilder res=new StringBuilder();
    for(int i=0;i<values.size();i++){
        if(i==values.size()-1){
            res.append(values.get(i));
        }else{
            res.append(values.get(i)).append("->");
        }
    }
    return res.toString();
}

https://www.mianshi.onlinehttps://www.i9code.cn

本文由博客一文多发平台 OpenWrite 发布!

逃跑的眼镜_bvbEK5
7 声望0 粉丝