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

二叉树的递归遍历

方法论

确定递归函数的参数和返回值

确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。

确定终止条件

写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。

确定单层递归的逻辑

确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。

前序遍历

leetocde144

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

中序遍历

leetcode94

class Solution {
public:void Traversal(vector<int>& result,TreeNode* t){if (t == nullptr) return;Traversal(result,t->left);result.push_back(t->val);Traversal(result,t->right);}vector<int> inorderTraversal(TreeNode* root) {vector<int> result;Traversal(result,root);return result;}
};

后序遍历

leetcode145

class Solution {
public:void Traversal(vector<int>& result,TreeNode* tre){if (tre == nullptr) return;Traversal(result,tre->left);Traversal(result,tre->right);result.push_back(tre->val);}vector<int> postorderTraversal(TreeNode* root) {vector<int> result;Traversal(result,root);return result;}
};

**总的来说,二叉树的递归遍历是有模板的,理解了其中一种遍历方式就理解了剩余两种,改变的地方无非是遍历的顺序。

http://www.lryc.cn/news/450804.html

相关文章:

  • 国内访问OpenAI API
  • 深入 Spring RestTemplate 源码:掌握 HTTP 通信核心技术
  • 计算机网络:计算机网络概述 —— 初识计算机网络
  • set和map结构的使用
  • 2. qt_c++反射实例
  • 卷积神经网络(CNN)的计算量和参数怎么准确估计?
  • Ruby基础语法
  • 插入排序C++
  • 修改ID不能用关键字作为ID校验器-elementPlus
  • 一文详解WebRTC、RTSP、RTMP、SRT
  • 全国职业院校技能大赛(大数据赛项)-平台搭建Zookeeper笔记
  • 不同领域神经网络一般选择什么模型作为baseline(基准模型)
  • 华为-IPv6与IPv4网络互通的6to4自动隧道配置实验
  • 【spring中event】事件简单使用
  • leetcode每日一题day19(24.9.29)——买票需要的时间
  • 智源研究院推出全球首个中文大模型辩论平台FlagEval Debate
  • python实用脚本(二):删除xml标签下的指定类别
  • vue3 父子组件调用
  • 线性模型到神经网络
  • 【架构】前台、中台、后台
  • Stable Diffusion 蒙版:填充、原图、潜空间噪声(潜变量噪声)、潜空间数值零(潜变量数值零)
  • ffmpeg录制视频功能
  • 【LeetCode】每日一题 2024_10_1 最低票价(记忆化搜索/DP)
  • [C++] 小游戏 征伐 SLG DNF 0.0.1 版本 zty出品
  • 黑马头条day7-app端文章搜索
  • 嵌入式必懂微控制器选型:STM32、ESP32、AVR与PIC的比较分析
  • Python selenium库学习使用实操二
  • 基于Hive和Hadoop的电信流量分析系统
  • 访问docker容器中服务的接口,报错提示net::ERR_CONNECTION_REFUSED
  • 【mysql相关总结】