Day42 代码随想录打卡|二叉树篇---二叉树的所有路径

题目(leecode T257):

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

叶子节点 是指没有子节点的节点。

方法:本题需要对二叉树中的所有路径进行遍历,并且是从根节点到所有的叶子节点。我们需要使用回溯的思想,回溯即是在找到每一条路径的结束之后,我们需要返回上一个节点,继续寻找是否有可行的路径。同样使用遍历,我们需要传入的参数是要处理的节点,path路径和保存结果的result数组。迭代的终止条件是当我们到达了也是节点,即cur->left==NULL && cur->right==NULL。此时我们就可以处理种植逻辑,即把path路径中的所有的元素都放到result数组中作为一条结果保存下来。其他情况下有左节点或右节点时我们都需要进行一次迭代与回溯。

题解:
 

class Solution {
private:void traversal(TreeNode* cur, vector<int>& path, vector<string>& result) {path.push_back(cur->val); // 节点进入路径进行保存if (cur->left == NULL && cur->right == NULL) {   //处理到了叶子节点的情况string sPath;for (int i = 0; i < path.size() - 1; i++) {   //将path中的路径都作为string保存sPath += to_string(path[i]);sPath += "->";}sPath += to_string(path[path.size() - 1]);    //将最后一个叶子节点也保存进去result.push_back(sPath);return;}if (cur->left) { // 左 traversal(cur->left, path, result);path.pop_back(); // 回溯}if (cur->right) { // 右traversal(cur->right, path, result);path.pop_back(); // 回溯}}public:vector<string> binaryTreePaths(TreeNode* root) {vector<string> result;vector<int> path;if (root == NULL) return result;traversal(root, path, result);return result;}
};

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

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

相关文章

vue-router 源码分析——2. router-link 组件是如何实现导航的

这是对vue-router 3 版本的源码分析。 本次分析会按以下方法进行&#xff1a; 按官网的使用文档顺序&#xff0c;围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码&#xff0c;更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升&#xff0c;甚至面试时…

CSS选择器和样式

CSS CSS&#xff1a;选择器&#xff1a;通配符选择器&#xff1a;基本选择器&#xff1a;标签选择器&#xff1a;类选择器&#xff1a;ID选择器&#xff1a;基本选择器的优先级别: 群组选择器:派生选择器&#xff1a;后代选择器&#xff1a;子代选择器&#xff1a;相邻兄弟选择…

sed批量修改shell脚本内容

需求:邮件服务器脚本ip做了切换,由原先的11.22.33.44,切换为11.22.33.55 需要把所有使用了11.22.33.44该ip的脚本改为11.22.33.55 示例: #建2个测试文件 cat test1.txt 11.22.33.44 hello 11.22.33.44cat test2.txt 11.22.33.44 world#1.先找出哪些脚本包含该ip grep 11.22.3…

正邦科技(day3)

出厂测试 设备校准 这个需要注意的是校准电流、电压、电感的时候有时候负感器会装反&#xff0c;mcu会坏&#xff0c;需要flash一下清空内存

【猫狗识别系统】图像识别Python+TensorFlow+卷积神经网络算法+人工智能深度学习

猫狗识别系统。通过TensorFlow搭建MobileNetV2轻量级卷积神经算法网络模型&#xff0c;通过对猫狗的图片数据集进行训练&#xff0c;得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。 一、前言 …

iptables备份

备份 iptables sudo iptables-save > iptables_backup.txt文件还原

【安装笔记-20240529-Windows-poedit 翻译编辑器】

安装笔记-系列文章目录 安装笔记-20240529-Windows-Poedit 翻译编辑器 文章目录 安装笔记-系列文章目录安装笔记-20240529-Windows-Poedit 翻译编辑器 前言一、软件介绍名称&#xff1a;Poedit主页官方介绍 二、安装步骤测试版本&#xff1a;Poedit-3.4.4下载链接安装界面 三、…

华为机械工程师面试问题

在机械工程师的面试中,面试官可能会提出一系列问题,以评估应聘者的专业知识、技能、经验以及解决问题的能力。以下是一些可能的面试题: 基础知识与技能: 请解释机械工程中常用的几种传动方式,并比较它们的优缺点。描述一下你在机械设计过程中常用的软件,并举例说明你是如…

网络安全设备常见部署模式介绍

文章目录 前言串联模式路由模式透明模式 旁路模式旁路监听代理模式正向代理透明代理反向代理 前言 网络安全设备主要有串联模式和旁路模式。这些模式在网络安全架构中扮演着关键角色&#xff0c;以确保数据传输的安全性和高效性。 串联模式 串联模式要求所有流量都必须通过安…

程序员为什么会成为工具人——及其一些破局的思考

一、程序员为什么会成为工具人 程序员为什么会成为工具人的因素分析 序号因素分析1 技术从来不是解决用户价值问题的那个人&#xff0c;产品才是解决用户需求痛点创造价值问题的那个人 &#xff08;技术只是服务于产品的工具&#xff0c;程序员永远都是在做最后一公里的搬砖&am…

Linux 命令 find 的深度解析与使用

Linux 命令 find 的深度解析与使用 在 Linux 系统中&#xff0c;find 命令是一个功能强大的工具&#xff0c;用于在文件系统中搜索文件或目录。无论是基于文件名、文件类型、文件大小、文件权限&#xff0c;还是基于文件的最后修改时间等&#xff0c;find 命令都能提供灵活的搜…

Windows家庭版 WSL2非C盘详细安装配置与WSL代理设置+WSL基础环境CUDA安装

1 WSL2 配置 1.1 WSL 开启 注意&#xff1a;需要在windows功能中开启“Hyper-V”和“适用于Linux的Windows子系统”功能 但是&#xff01;windows家庭版&#xff08;windows home&#xff09;是默认没有Hyper-V功能的&#xff0c;自己手动安装&#xff1a; 创建一个记事本&a…

前端面试宝典总结4-手搓代码JavaScript(基础版)

前端面试宝典总结4之手写代码JavaScript&#xff08;基础版&#xff09; 本文章 对各大学习技术论坛知识点&#xff0c;进行总结、归纳自用学习&#xff0c;共勉&#x1f64f; 上一篇&#x1f449;: 前端面试宝典总结4-手搓代码JavaScript&#xff08;数据处理&#xff09; 文…

R语言学习 - 柱状图

柱状图绘制 柱状图也是较为常见的一种数据展示方式&#xff0c;可以展示基因的表达量&#xff0c;也可以展示GO富集分析结果&#xff0c;基因注释数据等。这篇转录组工具比较 转录组分析工具哪家强&#xff1f;中就使用到比较多堆积柱状图。 常规矩阵柱状图绘制 有如下4个基…

Audio PsyChat:web端语音心理咨询系统

这是一个在服务器本地运行的web语音心理咨询系统&#xff0c;咨询系统内核使用PsyChat&#xff0c;我们为其制作了Web前端&#xff0c;并拼接了ASR和TTS组件&#xff0c;使局域网内用户可以通过单纯的语音进行交互。其中ASR和TTS组件使用PaddleSpeech API。 使用 使用单卡3090…

信息学奥赛初赛天天练-19-挑战程序阅读-探索因数、所有因数平和、质数的奥秘

PDF文档公众号回复关键字:20240604 1 2023 CSP-J 阅读程序3 阅读程序&#xff08;程序输入不超过数组成字符串定义的范围&#xff1a;判断题正确填√&#xff0c;错误填&#xff1b;除特殊说明外&#xff0c;判断题1.5分&#xff0c;选择题3分&#xff0c;共计40分&#xff…

C++中的静态变量与普通变量

在C中&#xff0c;变量的存储和生命周期可以根据其定义的位置和方式而有所不同。特别是&#xff0c;静态变量&#xff08;无论是静态局部变量还是静态全局变量&#xff09;与普通的全局变量和局部变量在行为和生命周期上有显著的区别。 局部变量 局部变量是在函数内部定义的变…

【微信支付】获取微信开发信息(全网最详细!!!)

前言 1、申请商户号 申请流程与资料 详细申请步骤 申请开通接入微信支付步骤 2、申请微信小程序 申请小程序步骤 查看小程序AppID 3、微信支付普通商户与AppID账号关联 4、获取开发中需要的密钥和证书 4.1、申请证书 4.2、下载证书工具 4.3、证书工具—填写商户信息…

如何进行团队协作

团队协作是项目管理中不可或缺的一部分&#xff0c;它涉及多个团队成员共同工作以达成共同的目标。以下是一些关于如何进行团队协作的建议&#xff1a; 1. 明确目标和角色 设定清晰的目标&#xff1a;确保所有团队成员都清楚了解项目的总体目标以及他们各自在其中的角色和职责…

关于微积分的几个问题回顾

1.定积分求解举例 定积分是微积分中的一个重要概念&#xff0c;用于求解连续函数在某一区间上的面积或体积等问题。下面我将给出一个定积分求解的举例。 假设我们要求解函数 f(x)x2 在区间 [0,1] 上的定积分&#xff0c;即求解 ∫01​x2dx 求解步骤 1. 找出被积函数 f(x) …