当前位置: 首页 > 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.mrgr.cn/news/39917.html

相关文章:

  • react-问卷星项目(3)
  • 828华为云征文 | 利用FIO工具测试Flexus云服务器X实例存储性能
  • 三款专业的英文文献翻译工具,翻译论文不在话下
  • AI营销小助手Blaze:让一个人干出十个人的活儿!
  • html+css+js实现dialog对话框
  • 2024年【危险化学品经营单位主要负责人】免费试题及危险化学品经营单位主要负责人复审考试
  • CDGA|数据资产管理:将无形数据转化为可衡量资产的战略路径
  • python格式化输入输出
  • API常用类与函数-日期与时间
  • 广西容县霞烟鸡,品牌兴农,助力乡村振兴!
  • uni-app之旅-day02-分类页面
  • Linux日志管理
  • 【论文阅读】MEDICAL GRAPH RAG: TOWARDS SAFE MEDICAL LARGE LANGUAGE MODEL VIA
  • Django 依赖库管理
  • 【必看!!!】10个技巧,3分钟教会你高效寻找开源项目
  • 模型压缩之剪枝
  • 计算机组成原理之进位计数制及其数据之间的相互转换
  • 代码覆盖率
  • https访问报错:net::ERR_CERT_DATE_INVALLD
  • html空单元格的占位