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

leetcode算法(257.二叉树的所有路径) - 实践

二叉树递归(前序遍历)

1.递归函数参数以及返回值

要传入根节点,记录每一条路径的path,和存放结果集的result,这里递归不需要返回值,代码如下:

void traversal(TreeNode* cur, vector& path, vector& result)

2.确定递归终止条件

本题要找到叶子节点。那么什么时候算是找到了叶子节点? 是当 cur不为空,其左右孩子都为空的时候,就找到叶子节点。

所以在本题的终止条件是:

if (cur->left == NULL && cur->right == NULL) {终止处理逻辑
}

使用vector<int> 结构path来记录路径,要把vector<int> 结构的path转为string格式,再把这个string 放进 result里。

终止处理逻辑如下:

if (cur->left == NULL && cur->right == NULL) { // 遇到叶子节点// 创建一个空字符串,用于存储最终的路径字符串string sPath;// 遍历path向量(存储了从根节点到当前叶子节点的所有节点值)// 循环到 path.size() - 1,即不包括最后一个元素// 因为每个元素后面需要添加"->",但最后一个元素不需要for (int i = 0; i < path.size() - 1; i++) {// 将第i个节点的整数值转换为字符串并追加到sPathsPath += to_string(path[i]);// 在节点值后面添加箭头符号"->",表示节点间的连接sPath += "->";}// 单独处理最后一个节点(即当前叶子节点)// 因为最后一个节点后面不需要添加"->"sPath += to_string(path[path.size() - 1]);// 将构建好的完整路径字符串添加到结果集result中result.push_back(sPath);// 返回上一层递归,因为叶子节点已经处理完毕return;
}

解释:

  1. 条件判断if (cur->left == NULL && cur->right == NULL)

    • 检查当前节点是否为叶子节点(没有左右子节点)

  2. 创建字符串string sPath;

    • 初始化一个空字符串,用于构建最终的路径字符串

  3. 循环构建路径for (int i = 0; i < path.size() - 1; i++)

    • path 是一个 vector<int>,存储了从根节点到当前节点的所有节点值

    • 循环遍历除了最后一个元素之外的所有元素

    • 对每个元素:先添加节点值,再添加 "->"

  4. 添加最后一个节点sPath += to_string(path[path.size() - 1]);

    • 单独处理最后一个元素(叶子节点)

    • 只添加节点值,不添加 "->"

  5. 保存结果result.push_back(sPath);

    • 将构建好的完整路径字符串添加到结果集中

  6. 返回return;

    • 结束当前递归分支,返回到上一层

本题的完整代码如下:

class Solution {
private:// 递归遍历函数// cur: 当前遍历的节点// path: 存储当前路径的节点值(引用传递,所有递归层共享)// result: 存储所有完整路径的结果集(引用传递)void traversal(TreeNode* cur, vector& path, vector& result) {// 先将当前节点的值添加到路径中// 这是"中"序遍历的一部分(前序处理)// 注释解释:为什么在这里添加?因为最后一个节点(叶子节点)也要加入pathpath.push_back(cur->val);// 检查当前节点是否为叶子节点(没有左右子节点)if (cur->left == NULL && cur->right == NULL) {// 如果是叶子节点,开始构建路径字符串string sPath; // 用于存储当前路径的字符串表示// 遍历path中除了最后一个元素之外的所有元素// 为每个元素添加值后加上"->"for (int i =
http://www.jsqmd.com/news/382023/

相关文章:

  • 2026水泥管厂家推荐排行榜产能规模与专利技术双维度权威解析 - 爱采购寻源宝典
  • 万方、知网、维普三个平台AIGC检测全过的实操攻略
  • 2026钢丝绳芯输送带厂家推荐排行榜产能与专利双维度权威解析 - 爱采购寻源宝典
  • Claude Code 作者再次分享 Anthropic 内部团队使用技巧
  • 2026年北京热门的门控技术公司推荐:欧美盾门控技术有限公司靠谱吗 - 工业设备
  • 闲置山东一卡通别浪费!这样回收,轻松盘活卡内剩余价值 - 可可收
  • 实用指南:C++ 单例模式
  • 2026液压工具厂家推荐排行榜产能、专利、服务三维度权威对比 - 爱采购寻源宝典
  • 2026年全国加氢站设备厂家权威榜单 实力靠谱 适配多场景氢能加注 深度解析 - 深度智识库
  • 深聊自动门市场,多玛自动门实力如何,哪家公司安装更靠谱? - 工业设备
  • 2026年骨汤舒化机厂家推荐:志诚机械多型号设备,适配餐饮店骨汤加工需求 - 品牌推荐官
  • 2026年除蟑螂服务专业推荐:成都仁民防治,高效/上门/快速/专业蟑螂治理全方案 - 品牌推荐官
  • 2026年全国加气站设备厂家哪家靠谱?靠谱优质厂家适配各类建站需求 兼顾稳定与高效 - 深度智识库
  • 2026年工程围挡厂家推荐:成都蓉锦装饰护栏,彩钢/道路/地铁/市政围挡全系供应 - 品牌推荐官
  • 2026年超细粉碎机厂家推荐:安丘市恒一粉体科技,立式/化工/中草药/气流粉碎机全系供应 - 品牌推荐官
  • GitHub前沿----AI Agent 爆发前夜:深度解析 UI-TARS, MCP 与 Claude Code 如何重塑构建流
  • 天猫享淘卡回收攻略,省钱小妙招! - 团团收购物卡回收
  • 第三届 SHCTF
  • 2026年超细/超微粉碎设备厂家推荐:潍坊星尔机械设备科技,多型号粉碎机全系供应 - 品牌推荐官
  • 2026年优秀的耐温尼龙过滤网厂家采购参考指南 - 品牌鉴赏师
  • 视觉真实之外:清华WorldArena全新评测体系揭示具身世界模型的能力鸿沟
  • 2026年珩磨管/精密钢管/无缝钢管厂家推荐:山东万硕金属制品有限公司全系供应 - 品牌推荐官
  • 线程可见性问题
  • antv3 x6 基本语法(一)
  • 别浪费!教你轻松回收沃尔玛购物卡! - 团团收购物卡回收
  • 2026年网红发型沙龙推荐:东都聚美造型护肤美甲美睫,时尚发型设计与专业剪烫染全攻略 - 品牌推荐官
  • 盘点北京GEO推广公司口碑榜,哪家GEO推广服务更专业 - 工业设备
  • 全球首位HCCDE-GaussDB认证专家:刘明和他的十一载数据库长跑
  • 2026年青岛笔记本电脑售后推荐:基于长期测试评价,针对数据安全与维修时效痛点 - 十大品牌推荐
  • 2026年海外社媒运营服务商推荐:青岛天道宜信科技,Facebook/谷歌/Linkedin/Tiktok等全平台运营方案 - 品牌推荐官