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

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

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

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

 前序遍历:

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

如下图,先遍历中间节点(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.

http://www.xdnf.cn/news/1991.html

相关文章:

  • 如何确保微型导轨的质量稳定?
  • 【FAS】《Face Detection Algorithm Based on Lightweight Network and Near Infrared》
  • 张 LLM提示词拓展16中方式
  • 安卓 Compose 相对传统 View 的优势
  • Python常见报错及解决方法,包含示例代码
  • 20250418-vue-作用域插槽
  • MySQL 详解之备份与恢复策略:数据安全的最后一道防线
  • BT151-ASEMI无人机专用功率器件BT151
  • 软件测试入门学习笔记
  • 蓝桥杯 5. 交换瓶子
  • IP SSL证书常见问题助您快速实现HTTPS加密
  • Infortrend普安存储 KS 私有云方案,构建生产线AOI光学检测数据的高速处理平台
  • Kafka生产者架构深度剖析
  • 【合新通信】浸没式液冷光模块与冷媒兼容性测试技术报告
  • 线程池参数配置
  • flutter getx 中.obs 的方法refresh方法
  • OpenAI 最新 o3 集成到 Cursor 和 Cline 工作流程中
  • 【leetcode刷题日记】lc.73-矩阵置零
  • U-Mail邮件加速服务:全球链路加速,安全稳定收发
  • OpenCV中的SIFT特征提取
  • ubuntu 20.04 编译运行lio-sam,并保存为pcd
  • 《Piper》皮克斯技术解析:RIS系统与云渲染如何创造奥斯卡级动画短片
  • XYNU2024信安杯-REVERSE(复现)
  • 面试踩过的坑
  • Shell脚本-while循环语法结构
  • 2025 年导游证报考条件新政策解读与应对策略
  • 为何 RAG 向量存储应优先考虑 PostgreSQL + pgvector 而非 MySQL?
  • Linux:进程间通信->匿名管道实现内存池
  • C/C++线程详解
  • Kafka 架构设计和组件介绍