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

二叉树的遍历(深度优先搜索)

二叉树的遍历方式有两种:深度优先搜索(采用递归方式实现),广度优先搜索。

深度优先搜索中包括三种遍历方式:前序遍历,中序遍历,后序遍历。

 前序遍历:

遍历中间节点,再遍历左节点,最后遍历右节点。

如下图,先遍历中间节点(5),再遍历左节点(4),4不仅是5的左节点还是2和1的中间节点,所以向下遍历就是4的左节点(2),右节点(1),最后再是最中间节点(5)的右节点(6)。

在进行任何一种遍历时一定要保证遍历到底!

递归实现代码:

从根节点开始遍历,如果节点不为空,就将节点的数值存入到数组中,这时存入的是现在的中间节点,通过递归的方式将遍历左节点到底,到底后再向下指针为空,又返回到调用它的上一层递归(底的中间节点)。 

class Solution {
public:void traversal(TreeNode*cur,vector<int>&vec){if(cur==NULL){return;}vec.push_back(cur->val);traversal(cur->left,vec);traversal(cur->right,vec);}vector<int> preorderTraversal(TreeNode* root) {vector<int>result;traversal(root,result);return result;}
};

中序遍历:

遍历左节点,再遍历中节点,最后遍历右节点。

与前序遍历相似,只是改变了顺序,不直接输出中间界定,而是将左节点遍历到底。

        traversal(cur->left,vec);vec.push_back(cur->val);traversal(cur->right,vec);

后序遍历:

遍历左节点,再遍历右节点,最后遍历中间节点。

        traversal(cur->left,vec);traversal(cur->right,vec);vec.push_back(cur->val);

Constant dripping wears away a stone.

相关文章:

  • 基于AI技术的高速公路交通引流系统设计与应用研究
  • 05-GPIO原理
  • Bolsig+超详细使用教程
  • toCharArray作用
  • Java知识日常巩固(五)
  • 【torch\huggingface默认下载路径修改】.cache/torch/ 或 .cache/huggingface
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第四模块·Java特性专精 —— 第十三章 异常处理:超越C错误码的文明时代
  • 【2025 最新前沿 MCP 教程 01】模型上下文协议:AI 领域的 USB-C
  • 支付宝小程序组件与页面构造器使用指南:从页面到组件的正确迁移
  • 第25周:DenseNet+SE-Net实战
  • 抖音集团电商流量实时数仓建设实践
  • 制作一个简单的操作系统10
  • 第R4周:LSTM-火灾温度预测
  • RocketMQ 主题与队列的协同作用解析(既然队列存储在不同的集群中,那要主题有什么用呢?)---管理命令、配置安装(主题、消息、队列与 Broker 的关系解析)
  • java多线程(6.0)
  • 探秘 3D 展厅之卓越优势,解锁沉浸式体验新境界
  • DeepSeek本地部署保姆级教程
  • shell脚本3
  • 【基础IO上】复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux系统下,一切皆文件 | 重定向原理
  • OpenAI 最新 o3 集成到 Cursor 和 Cline 工作流程中
  • “梅花奖”快闪走入上海张园,朱洁静在石库门前起舞
  • 中公教育:去年全面扭亏,经营性现金流增长169.6%
  • 又一名90后干部被查,已有多人倒在乡镇领导岗位上
  • 重新认识中国女性|婚姻,古代传统家庭再生产的根本之道
  • 邮轮、无人机、水上运动……上海多区推动文旅商体展融合发展
  • 李彦宏:DeepSeek不是万能,多模态将是未来基础模型的标配