前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【LeetCode】--- 二叉树的所有路径

【LeetCode】--- 二叉树的所有路径

作者头像
用户11288958
发布2025-01-24 08:12:04
发布2025-01-24 08:12:04
6200
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

题目传送门

解法一:深度优先搜索(DFS)

算法原理

创建constructPaths方法。传递三个参数TreeNode root, String path, List<String> ret 方法返回值是void 如果当前节点不为null 新建 StringBuffer pathSB 变量 将当前节点的值添加到这个变量中,记得要调用一下toString方法Integer.toString(root.val) 接着判断当前节点是否为叶子节点, 若是说明当前路径已经探索完毕,将pathSB添加到答案中。 若不是,说明当前路径还没有探索完毕,添加 "->" 字符串。 接着再去递归左边 左边完了再去递归右边

代码语言:javascript
代码运行次数:0
复制
class Solution {
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> ret = new ArrayList<>();
        constructPaths(root, "", ret);
        return ret;
    }

    public void constructPaths(TreeNode root, String path, List<String> ret){
        if(root != null){
            StringBuffer pathSB = new StringBuffer(path);//SB代表当前变量是StringBuffer类型
            //后面需要转成String类型
            pathSB.append(Integer.toString(root.val));
            if(root.left == null && root.right == null){// 当前节点是叶子节点
                ret.add(pathSB.toString());// 把路径加入到答案中
            }else{
                pathSB.append("->");// 当前节点不是叶子节点,继续递归遍历
                constructPaths(root.left,pathSB.toString(),ret);
                constructPaths(root.right,pathSB.toString(),ret);
            }
        }
    }
}

复杂度分析

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目传送门
  • 解法一:深度优先搜索(DFS)
  • 算法原理
  • 复杂度分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档