力扣257. 二叉树的所有路径

思路:题目需要记录从根节点开始走的路径,无疑选用前序遍历,用一个数组paths 记录走过的节点信息,遇到叶子节点就用另一个list记录下路径,回溯时删掉paths尾节点即可

java 复制代码
class Solution {
     public List<String> binaryTreePaths(TreeNode root) {

        List<String> list = new ArrayList<>(); //处理的结果
        if(root == null) {
            return list;
        }
        List<Integer> paths = new ArrayList<>(); //当前路径顺序
        func(root, paths, list);
        return list;

    }
    public void func(TreeNode root, List<Integer> paths, List<String> list) {
        //前序遍历,中
        paths.add(root.val);

        //如果是叶子节点,就记录下路径
        if(root.left==null && root.right == null) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < paths.size()-1; i++) {
                sb.append(paths.get(i)).append("->");
            }
            sb.append(paths.get(paths.size()-1));
            list.add(sb.toString());
            //return;

        }
        //左,不是叶子节点就一直递归深入
        if(root.left != null) {
            func(root.left, paths, list);
            paths.remove(paths.size()-1);//结束一轮递归要回退一步

        }
        //右
        if(root.right != null) {
            func(root.right, paths, list);
            paths.remove(paths.size()-1);

        }
    }

}
相关推荐
运筹vivo@2 分钟前
两数之和(leetcode)
算法·leetcode·职场和发展
吃好睡好便好9 分钟前
在Matlab中绘制二维等高线图
开发语言·人工智能·学习·算法·matlab
Mr_pyx13 分钟前
LeetCode Hot 100 - 最长递增子序列完全题解
算法·leetcode·职场和发展
Mr_pyx15 分钟前
LeetCode Hot 100 - 爬楼梯完全题解
算法·动态规划
z2005093019 分钟前
今日算法: 二叉搜索树
算法
蝈理塘(/_\)大怨种22 分钟前
快速排序的递归与非递归实现
数据结构·算法
吴可可12331 分钟前
用Bulge保持多段线圆弧连续性
算法·c#
qq_2965532741 分钟前
矩阵逆时针旋转90度:三种解法从入门到精通
数据结构·python·算法·面试·矩阵
声声codeGrandMaster44 分钟前
seq2seq概念和数据集处理
人工智能·pytorch·python·算法·ai
谙弆悕博士1 小时前
【附C源码】C语言实现散列表
c语言·开发语言·数据结构·算法·散列表·数据结构与算法