在本科毕设结束后,我开始刷卡哥的“代码随想录”,每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。
代码随想录此题链接
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
class Solution {
//整体是前序遍历
public List binaryTreePaths(TreeNode root) {List result = new ArrayList();List paths = new ArrayList();getPath(paths,result,root);return result;
}public void getPath(List paths,List pathStrs,TreeNode root){//需要加入当前节点 前序中首先是“中”,之后才是“左”、“右” paths.add(root.val);if(root.left == null && root.right == null){//终止条件:遇到叶子节点//则将遇到的所有paths转换成strStringBuilder path = new StringBuilder("");for(int i = 0;i < paths.size() - 1;i++){path.append(paths.get(i)).append("->");}pathStrs.add(path.append(paths.get(paths.size() - 1)).toString());}//???单层递归循环if(root.left != null){getPath(paths,pathStrs,root.left);paths.remove(paths.size() - 1);//ArrayList删除的API,删除指定下标的元素}if(root.right != null){getPath(paths,pathStrs,root.right);paths.remove(paths.size() - 1);}}
}
暂无
暂无