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

【代码随想录day 15】 力扣 257. 二叉树的所有路径

视频讲解:https://www.bilibili.com/video/BV1ZG411G7Dh/?vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0257.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
力扣题目:https://leetcode.cn/problems/binary-tree-paths/description/

这道题实质上就是一道遍历节点题,但需要记下二叉树的所有路径,涉及到这几个问题:

  1. 遍历节点记录的是int型,返回的路径是string类型的,因此涉及到类型转换的问题,使用C++的to_string函数来完成转换。
  2. 加入"->"符号涉及到最后一条路径没有,因此要分好情况。
  3. 回溯问题,关于路径遍历需要回溯到父节点的另一条子树路径,因此遍历完之和需要进行pop操作来回溯节点。
  4. 对于最后一个节点的遍历,需要先进行路径记录,再终止遍历。
class Solution {
public:void traversal(TreeNode *cur, vector<int >&path, vector<string>&result){//记录路径的值path.push_back(cur->val);//判断终止条件,如果是叶子节点就终止,但是需要记录叶子节点的路径,所以在终止前记录路径if(cur->left==NULL&&cur->right==NULL){//将int类型转换为string类型,并且加上->符号string sPath;for(int i=0; i< path.size()-1;i++){//int转为stringsPath=sPath+ to_string(path[i]);//加入->sPath=sPath+"->";}//最后一个路径不需要加->,所以单独讨论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();}}vector<string> binaryTreePaths(TreeNode* root) {vector<string> result;vector<int> path;//执行遍历路径函数,输入根节点,路径,返回结果traversal(root,path,result);//最后返回resultreturn result;}
};
http://www.lryc.cn/news/616152.html

相关文章:

  • [FOC电机控制] 电压频谱图
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ray’问题
  • Redis一站式指南一:从MySQL事务到Redis持久化及事务实现
  • 【每天一个知识点】深度领域对抗神经网络
  • MACBOOK M1安装达梦8数据库
  • nginx-主配置文件
  • 异步问题的概念和消除问题技巧
  • 【Tomcat】企业级web应用服务器
  • ATF(TF-A)安全通告 TFV-12(CVE-2024-5660)
  • nestjs官网推荐typeorm而不是prisma的原因
  • 实现MATLAB2024b和M文件关联(防止运行多个MATLAB)
  • 【0基础3ds Max】主工具栏介绍(下)
  • 金融机构在元宇宙中的业务开展与创新路径
  • ATF(TF-A)安全通告 TFV-13(CVE-2024-7881)
  • vue3项目中在一个组件中点击了该组件中的一个按钮,那么如何去触发另一个组件中的事件?
  • RAG (Retrieval-Augmented Generation) 原理详解与实例
  • Stream流应用
  • 工业相机选择规则
  • Java数据结构——LinkedList
  • MariaDB 数据库管理与web服务器
  • JUC学习笔记-----ReentrantLock
  • 通过trae开发你的第一个Chrome扩展插件
  • CST MATLAB 联合仿真超材料开口谐振环单元
  • Pytorch进阶-timm库-00快速开始
  • 数据结构(17)排序(下)
  • Excel常用功能函数
  • 深度相机---双目深度相机
  • CPP多态
  • 信号处理函数中调用printf时,遇到中断为什么容易导致缓冲区损坏?
  • 《广西棒垒球百科》男子垒球世界纪录·垒球2号位