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

day68—DFS—二叉树的所有路径(LeetCode-257)

题目描述

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

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

示例 1:

输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]

示例 2:

输入:root = [1]
输出:["1"]

提示:

  • 树中节点的数目在范围 [1, 100] 内
  • -100 <= Node.val <= 100

解决方案:

1、越界判断:结点为空

2、结束条件:左右子节点为空

3、路径不可用“引用”:下一条路径会刷新路径

函数源码:

完整版: 

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:string a="->";vector<string> binaryTreePaths(TreeNode* root) {vector<string> vx={};if(root==NULL)  return vx;string path;path=to_string(root->val);if(root->left==NULL&&root->right==NULL)   {vx.push_back(path);return vx;}path+=a;dfs(root->left,vx,path);dfs(root->right,vx,path);return vx;}void  dfs(TreeNode* node,vector<string>&ans,string path){if(node==NULL)  return;path+=to_string(node->val);if(node->left==NULL && node->right==NULL) {ans.push_back(path);cout<<endl<<path<<endl;return;}path+=a;dfs(node->left,ans,path);dfs(node->right,ans,path);}};

改良版:(减少代码量)

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:string a="->";vector<string> binaryTreePaths(TreeNode* root) {vector<string> vx={};string path;dfs(root,vx,path);return vx;}void  dfs(TreeNode* node,vector<string>&ans,string path){if(node==NULL)  return;path+=to_string(node->val);if(node->left==NULL && node->right==NULL) {ans.push_back(path);cout<<endl<<path<<endl;return;}path+=a;dfs(node->left,ans,path);dfs(node->right,ans,path);}};

 

http://www.lryc.cn/news/585955.html

相关文章:

  • 贪心算法题解——划分字母区间【LeetCode】
  • 【LeetCode453.最小操作次数使数组元素相等】
  • 代码训练LeetCode(45)旋转图像
  • 【Linux-云原生-笔记】Apache相关
  • 【Modern C++ Part9】Prefer-alias-declarations-to-typedefs
  • 内网穿透系列九:开源的网络穿透与组网工具 EasyTier,支持多种数据传输通道,去中心化,兼具高效与安全
  • Kafka Schema Registry:数据契约管理的利器
  • 对日开发 秀丸文本编辑器 添加文本变换模块
  • 聊一聊Spring框架接口测试常见场景有哪些?
  • 学习C++、QT---22(QT中QTextStream库读取文件、写入文件的讲解)
  • docker搭建 与镜像加速器
  • win10安装Rust Webassembly工具链(wasm-pack)报错。
  • C++中Lambda表达式 [ ] 的写法
  • AI 时代的分布式多模态数据处理实践:我的 ODPS 实践之旅、思考与展望
  • 深入解析 Stack 和 Queue:从原理到实战应用
  • 每日算法刷题Day46 7.12:leetcode前缀和3道题和差分2道题,用时1h30min
  • pgsql模板是什么?
  • Redis Geospatial 功能详解及多边形包含判断实现
  • 【JVM|类加载】第三天
  • 专业硬件检测工具 AIDA64 Extreme V7.70.7500 至尊版
  • 12. JVM的垃圾回收器
  • 1. 好的设计原则
  • Java应用全链路故障排查实战指南:从系统资源到JVM深度诊断
  • 钉钉小程序开发环境配置与前端开发指南
  • 【小沐杂货铺】基于Three.JS绘制汽车展示Car(WebGL、vue、react、autoshow、提供全部源代码)
  • 关于 验证码系统 详解
  • Ubuntu安装Jenkins
  • Java文件传输要点
  • 大数据在UI前端的应用深化研究:用户行为数据的时序模式挖掘
  • 前端内容-ES6