Leetcode 257-二叉树的所有路径

news2024/12/23 13:57:16

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。
在这里插入图片描述
在这里插入图片描述

题解

递归+回溯
遇到叶节点返回
每层的做法,list加上当前节点的string值

本题解将res作为全局变量,作为局部变量写法也是一样的
dfs的参数怎么确定? 需要进入下一层的参数(树节点/链表节点、中间结果集、最终结果集)
dfs怎么回溯? 进入某个分支的遍历后弹出当前路径的最后一个节点
dfs怎么返回? 遇到满足条件的结果集后将其加入最终结果集

代码最后暗含回溯
遍历完左子树,构建出合格的路径,加入解集,遍历右子树之前,路径要撤销最末尾的选择,如果path用的是数组,就会弹出最后一项。
这里用的字符串,保存了当前节点的路径,s+=root.val+"->"会创建一个新的字符串。递归右子树时,传入它即可,因为它不包含在递归左子树所拼接的东西

class Solution {
    //递归+回溯
    //遇到叶节点返回
    //每层的做法,list加上当前节点的string值


    //本题解将res作为全局变量,作为局部变量写法也是一样的
    //dfs的参数怎么确定?需要进入下一层的参数(树节点/链表节点、中间结果集、最终结果集)
    //dfs怎么回溯?进入某个分支的遍历后弹出当前路径的最后一个节点
    //dfs怎么返回?遇到满足条件的结果集后将其加入最终结果集
    List<String> res = new ArrayList<>();
    public List<String> binaryTreePaths(TreeNode root) {
        //List<String> res = new ArrayList<>();
        String s="";
        dfs(root,s);
        return res;
    }

   //递归终止条件:
    public void dfs(TreeNode root,String s) {
        //边界条件
        if(root==null){
            return;
        }
        
        //递归终止条件:当前节点为叶节点
        if(root.left==null&&root.right==null){
            s+=root.val;
            res.add(s);//遇到叶节点后将当前路径加入结果集
        }
        
        //不是叶节点,则需要+"->"并继续向下递归
        s+=root.val+"->";
/*此处暗含回溯
遍历完左子树,构建出合格的路径,加入解集,遍历右子树之前,路径要撤销最末尾的选择,如果path用的是数组,就会弹出最后一项。
这里用的字符串,保存了当前节点的路径,s+=root.val+"->"会创建一个新的字符串。递归右子树时,传入它即可,因为它不包含在递归左子树所拼接的东西。
*/
        dfs(root.left,s);
        dfs(root.right,s);
    }
    
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2092107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像边缘检测Canny

一、Canny边缘检测原理 边缘检测是图像处理和计算机视觉中的基本问题&#xff0c;边缘检测的目的是标识数字图像中亮度变化明显的点。 Canny边缘检测算法是由4步构成&#xff1a;噪声去除、计算图像梯度、非极大值抑制、滞后阈值 1、噪声去除&#xff1a;由于边缘检测很容易受到…

Vulnhub靶场 | DC系列 - DC6

文章目录 DC-6环境搭建渗透测试 DC-6 环境搭建 靶机镜像下载地址&#xff1a;https://vulnhub.com/entry/dc-6,315/需要将靶机和 kali 攻击机放在同一个局域网里&#xff1b;本实验kali 的 IP 地址&#xff1a;192.168.10.146。 渗透测试 使用 nmap 扫描 192.168.10.0/24 网…

【报错已解决】`ValueError: Expected 2D array, got 1D array instead`的

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言&#xff1a; 在使用机器学习库&#xff08;如scikit-learn&#xff09;时&#xff0c;开发者可能会遇到ValueError: Expec…

Qt/C++地址转坐标/坐标转地址/逆地址解析/支持百度高德腾讯和天地图

一、前言说明 地址和经纬度坐标转换的功能必须在线使用&#xff0c;一般用在导航需求上&#xff0c;比如用户输入起点地址和终点地址&#xff0c;查询路线后&#xff0c;显示对应的路线&#xff0c;而实际上各大地图厂家默认支持的是给定经纬度坐标来查询&#xff08;百度地图…

光纤FPV无人机技术详解

1. 技术基础与原理 光纤FPV&#xff08;First Person View&#xff0c;第一人称视角&#xff09;无人机技术&#xff0c;是将光纤通信技术与无人机技术相结合的一项创新技术。该技术通过光纤作为高速、低延迟的数据传输媒介&#xff0c;实现了无人机拍摄的高清视频信号实时回传…

P0.9/P1.25全倒装共阴节能COB超微小间距LED显示屏已抢占C位

COB&#xff08;Chip on Board&#xff09;技术最早发源于上世纪60年代&#xff0c;是将LED芯片直接封装在PCB电路板上&#xff0c;并用特种树脂做整体覆盖。COB实现“点” 光源到“面” 光源的转换。点间距有P0.3、P0.4、P0.5、P0.6、P0.7、P0.9、P1.25、P1.538、P1.5625、P1.…

带有WebUI的cron替代品Dagu

什么是 Dagu &#xff1f; Dagu 是一个强大的 Cron 替代品&#xff0c;它带有一个 Web UI。它允许你将命令之间的依赖关系定义为有向无环图(DAG)&#xff0c;使用声明式的 YAML 格式。Dagu 的设计易于使用、自包含且无需编码&#xff0c;非常适合小型项目。 安装 在群晖上以 D…

科技与文化的完美碰撞 德施曼玄武•紫禁城K80亮相成都车展

8月30日-9月8日&#xff0c;第二十七届成都国际汽车展览会将在中国西部国际博览城举行&#xff0c;德施曼将与海尔、美的、松下等知名品牌携旗下重磅产品集中参展。大会同期“京东MALL智享家生活”活动也将开启&#xff0c;行业首个与紫禁城IP联名的智能锁产品德施曼玄武•紫禁…

52基于SpringBoot+Vue+uniapp的旅游管理系统的的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录 前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus 系统测试系统测试目的系统功能测试系统测试结论 为什么选择我代码参考数据库参考源码获取源码获取 前言 &#x1f31e;博主介绍 &#xff1a;✌全网粉丝15W,CSDN特邀作者、21…

【初阶C++篇】~ C++入门

C入门基础 前言8月语言排行 一 C书籍推荐二 C的第一个程序​三命名空间 namespace命名空间的使用 四C输入 输出五缺省参数六函数重载&#xff08;就是函数可以同名&#xff09;七引用引用和指针的关系 八 inline内联 前言 学完数据结构&#xff0c;那么C也就随之而来&#xff…

数据分析处理库(pandas)

目录 数据预处理 数据读取 DataFrame结构 数据索引 创建DataFrame Series操作 数据分析 统计分析 pivot数据透视表 groupby操作 常用函数操作 Merge操作 排序操作 缺失值处理 apply自定义函数 时间操作 绘图操作 大数据处理技巧 数值类型转换 属性类型转换…

FPGA学习笔记

FLASH: 掉电程序不丢失&#xff0c;属于ROM. 是的&#xff0c;Flash 存储器属于 ROM&#xff08;只读存储器&#xff09;的范畴&#xff0c;但它与传统的 ROM&#xff08;如 PROM、EPROM&#xff09;有一些区别。 Flash 与 ROM 的关系 ROM&#xff08;Read-Only Memory&#…

企业级Mysql 集群技术部署

目录 1.1部署mysql 1.1.1 安装依赖性&#xff1a; 1.1.2 下载并解压源码包 1.1.3 源码编译安装mysql 1.1.4 部署mysql 2.mysql的主从复制 2.1 配置masters 2.2配置slave 2.3 延迟复制 2.4 慢查询日志 2.5并行复制 2.6 原理刨析 2. 7架构缺陷 3.半同步模式 3.1半同…

智能导诊系统:帮助患者找医院、找科室、找医生,解决“知症不知病”“知病不知科”“挂错号”问题

方案概述 智能导诊是基于医疗大模型、知识图谱、人机交互&#xff0c;帮助患者找医院、找科室、找医生&#xff0c;解决“知症不知病”“知病不知科”“挂错号”问题&#xff0c;根据病情分级导流&#xff0c;助力分级诊疗。支持通过语音、文字、点选、图片等多种方式与患者沟…

macbook怎么换自定义壁纸?Mac怎么设置壁纸 macOS中如何轻松删除不需要的壁纸?

自定义壁纸&#xff0c;不仅是为了优化桌面外观&#xff0c;还能在很大程度上影响用户情绪。一张好看的壁纸&#xff0c;可以显著提升用户的使用体验。因此&#xff0c;掌握更换和删除壁纸的操作技巧&#xff0c;就显得十分重要。下面详细解读如何在Mac上设置壁纸&#xff0c;以…

利用Leaflet.js创建交互式地图:绘制多个多边形和点位

引言 在地理信息系统&#xff08;GIS&#xff09;和地图可视化领域&#xff0c;Leaflet.js是一个轻量级但功能强大的JavaScript库&#xff0c;它提供了丰富的API来创建交互式地图。本文将通过一个实际的Vue组件示例&#xff0c;展示如何使用Leaflet.js在地图上绘制多边形和点位…

用「图灵测试」检验AI尤其是大语言模型,真的科学吗?

当前的大型语言模型似乎能够通过一些公开的图灵测试。我们该如何衡量它们是否像人一样聪明呢&#xff1f; 在发布后的近两年时间里&#xff0c;ChatGPT 表现出了一些非常类似人类的行为&#xff0c;比如通过律师资格考试。这让一些人怀疑&#xff0c;计算机的智力水平是否正在接…

c++习题28-计算2的N次方

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 描述 任意给定一个正整数N(N<100)&#xff0c;计算2的n次方的值。 输入描述 输入一个正整数N。 输出描述 输出2的N次方的值。 用例输入 1 5 用例输出 1 32 二&#xff0…

【python入门到精通专题】1.知识与环境准备

小节目标: 计算机基础知识了解编程语言python安装与卸载pycharm安装与卸载终端的使用 一.计算机基础 程序员要想让计算机工作&#xff0c;必须知道计算机能干什么&#xff0c;怎么干的&#xff0c;这也就是我们必须学习计算机基础的原因 1.硬件系统 理解方式: 你通过耳朵和…

英文文献翻译工具推荐哪个?高效学习新选择

在学习英语的旅途中&#xff0c;我们难免会遇到难以理解的词汇、句子或整篇文章。 这时&#xff0c;一款优秀的英文文献翻译软件就显得尤为重要。它不仅能助你一臂之力&#xff0c;还能让你的学习过程更加高效。 本文将为你推荐五款英文文献翻译软件免费版&#xff0c;它们将…