当前位置: 首页 > 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.dtcms.com/a/276349.html

相关文章:

  • 微信小程序form组件的使用
  • 从json中提取i18n字段
  • nodej获取当前系统的cpu架构信息
  • 程序员软技能之推广营销-04-长尾效应(Long Tail Effect)
  • UnityShader——SSAO
  • C++类模版1
  • Linux进程的生命周期:状态定义、转换与特殊场景
  • 【Elasticsearch】检索模板(Search Template)
  • 从输入到路径:AI赋能的地图语义解析与可视化探索之旅(2025空间智能全景)
  • C++ Boost 自动链接机制详解
  • Java基础:泛型
  • 单调栈单调队列【算法进阶】
  • 11. JVM中的分代回收
  • 数据结构自学Day6 栈与队列
  • BaseDao 通用查询方法设计与实现
  • 快速过一遍Python基础语法
  • 015---全面理解交易:区块链状态转移的原子单位与链上执行全流程图解
  • 【AI News | 20250711】每日AI进展
  • APP Inventor使用指南
  • LeetCode 3169.无需开会的工作日:排序+一次遍历——不需要正难则反,因为正着根本不难
  • 【使用Pyqt designer时pyside2安装失败】
  • 如何彻底禁用 Chrome 自动更新
  • C++实现二叉树左右子树交换算法
  • vuecil3+版本下,兼容ie等不支持es6的低版本浏览器
  • 内容总监的效率革命:用Premiere Pro AI,实现视频画幅“一键重构”
  • 四、深度学习——CNN
  • 快速上手UniApp(适用于有Vue3基础的)
  • 服务器ssh连接防护指南
  • 软件测试基础1-软件测试需求分析
  • Python技巧记录