当前位置: 首页 > 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 工作流程中
  • 河南信阳:对违规吃喝问题不遮丑不护短,露头就打、反复敲打
  • 秦洪看盘|缩量回踩,积蓄叩关能量
  • 知名猎头公司创始人兼首席执行官庄华因突发疾病逝世,享年62岁
  • 哪种“网红减肥法”比较靠谱?医学专家和运动专家共同解答
  • 河南省委常委会会议:坚持以案为鉴,深刻汲取教训
  • 奥迪车加油时频繁“跳枪”维修两年未解决,4S店拒退换:可延长质保