当前位置: 首页 > article >正文

力扣 LeetCode 257. 二叉树的所有路径(Day8:二叉树)

 

解题思路:

第一次提到回溯

前序遍历

中左右

中是处理过程

左右是递归过程

注意递归三部曲的第二部,确定终止条件,这里就是遍历完叶子节点就停止,而不是遍历到空节点

class Solution {
    List<String> res = new ArrayList<>();
    List<Integer> paths = new ArrayList<>();

    public List<String> binaryTreePaths(TreeNode root) {
        recur(root);
        return res;
    }

    public void recur(TreeNode root) {
        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));
            res.add(sb.toString());
            return;
        }
        if (root.left != null) {
            recur(root.left);
            paths.remove(paths.size() - 1);
        }
        if (root.right != null) {
            recur(root.right);
            paths.remove(paths.size() - 1);
        }
    }
}


http://www.kler.cn/a/405540.html

相关文章:

  • 【软件入门】Git快速入门
  • 【算法】计算程序执行时间(C/C++)
  • Figma入门-文字、样式、链接、动作
  • 第6篇 寻找最大数___ARM C语言程序<二>
  • vue3+elementui-plus el-dialog全局配置点击空白处不关闭弹窗
  • 【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合
  • 泷羽sec-星河飞雪-shell-7
  • 演讲回顾丨杭州悦数 CTO 叶小萌:图数据库发展新航向——拥抱 GQL,融合 HTAP,携手 AI
  • git config 指令详解
  • C#开发基础之借用dotnet CLI命令行参数的设计了解命令行构建用法
  • Android 在Android.bp或Android.mk文件移除原生内置应用
  • 服务器数据恢复—raid5阵列热备盘上线失败导致EXT3文件系统不可用的数据恢复案例
  • Lumerical脚本——创建基本结构
  • comprehension
  • python文件对象方法
  • @PermitAll注解和@PreAuthorize注解
  • Next.js 开发教程(三):CSS 样式的完整指南
  • VLAN资源池(Java Python JS C++ C )
  • 如何在 React 项目中应用 TypeScript?应该注意那些点?结合实际项目示例及代码进行讲解!
  • 已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案
  • 【c++笔试强训】(第十六篇)
  • JAVA八股与代码实践----接口与抽象类的区别和用法
  • 利用KDJ指标显示多空K线(附带源码)
  • Unity3D 客户端网络角色的操作与行为分离设计详解
  • 一文详解kafka知识点
  • LayaAir引擎荣获开源大赛一等奖