递归算法的三要素:参数和返回值;终止条件;单层递归的逻辑。

1.递归函数的参数和返回值:确定哪些参数是递归过程中需要处理的,就在递归函数里加上这个参数,并要明确递归函数的返回值和返回类型。

2.确定终止条件:如果递归没有终止条件,操作系统的内存栈就会溢出。

3.确定单层递归的逻辑:确定每一层递归需要处理的信息。

前序遍历递归实现:

//前序遍历
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;
} 

中序遍历实现:

//中序遍历
void traversal(TreeNode* cur, vector<int>& vec) {if(cur == NULL) return;traversal(cur->left, vec);vec.push_back(cur->val);traversal(cur->right, vec);
}vector<int> inorderTraversal(TreeNode* root) {vector<int> result;traversal(root, result);return result;
}

后序遍历实现:

//后序遍历
void traversal(TreeNode* cur, vector<int>& vec) {if(cur == NULL) return;traversal(cur->left, vec);traversal(cur->right, vec);vec.push_back(cur->val);
}vector<int> postorderTraversal(TreeNode* root) {vector<int> result;traversal(root, result);return result;
}

二叉树遍历的递归算法相关推荐

  1. 数据结构上机实践第九周项目2 - 二叉树遍历的递归算法

    二叉树遍历的递归算法 递归问题总会成为我们的难点,代码量少,思维量确是很大,难是在所难免的,所以,在思维理解的同时结合实现代码理解,这样就很有可能让我们打开思路,理解的更深,本次实践将在二叉树算法的基 ...

  2. 第九周项目实践2 二叉树遍历的递归算法

    #ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED#define MaxSize 100 typedef char ElemType; typedef ...

  3. 二叉树遍历方法——前、中、后序遍历(图解)

    目录 一.前序遍历 (1)递归版本 (2)非递归版本 二.中序遍历 (1)递归版本 (2)非递归版本 三.后序遍历 (1)递归版本 (2)非递归版本 四.总结 五.测试程序 六.程序输出 二叉树的遍历 ...

  4. 二叉树遍历的非递归算法

    大一下半期数据结构 知识点 递归算法虽然简单,但一般而言,其执行效率并不高.对于二叉树的遍历操作,可以仿照递归算法执行过程中工作栈的状态变化得到非递归算法. 一.前序遍历非递归算法 二叉树前序遍历非递 ...

  5. (※)中序遍历二叉树的非递归算法

    在此之前,我们已经学习了中序遍历二叉树的递归算法,相信大家已经将其牢牢掌握了. 除了使用递归思想作为求解问题的钥匙,还可以借助栈来以非递归方式实现该问题的求解. 首先,我们要讨论存储二叉树结点信息的栈 ...

  6. 二叉树中序遍历非递归算法实现详解

    二叉树是数据结构中的经典结构,也是应用很广泛的结构之一.二叉树具有一些特定的性质,如 n0 = n2+1,在一些应用中,常常要求在树中查找具有某些特征的节点,或者对树中节点进行处理,即遍历二叉树的问题 ...

  7. 二叉树的后序遍历(非递归算法)

    /*     后序遍历(非递归算法)     ①先序遍历顺序:根节点-左孩子-右孩子     ②后序遍历顺序:左孩子-右孩子-根节点     ③后序遍历倒过来:根节点-右孩子-左孩子     ①和③对 ...

  8. C++实现二叉树中序遍历非递归算法

    /*二叉树的中序遍历非递归算法目标遍历的二叉树:1/ \2 4/ \3 5 待输出结果为3,2,5,1,41.首先得用上面定义的结构体把这颗树表示出来2.表示出这颗树后在调用二叉树的中序遍历非递归算法 ...

  9. 数据结构源码笔记(C语言):二叉树遍历

    //二叉树遍历 #include<stdio.h> #include<malloc.h> #include<malloc.h> #define MaxSize 10 ...

最新文章

  1. java 环境部署——java源码包的安装——java-rpm包的安装
  2. using语句之-释放资源和异常处理
  3. 《c语言从入门到精通》看书笔记——第14章 文件
  4. 如何在 ASP.NET Core 中使用 NLog 的高级特性
  5. Javascript表达式中连续的 和 || 之赋值区别
  6. 【Flink】Disconnect from JobManager responsible for
  7. matlab mrst 工具箱 用共轭梯度法 找极值点
  8. JavaWeb开发中的乱码问题
  9. MySQL时区错误导致server time zone value 'Öйú±ê׼ʱ¼ä' 错误
  10. findbug规则说明
  11. 多路增广 Dinic算法
  12. 解决网页内容无法复制的方法
  13. WiFi 的认证方法
  14. 代写品牌故事-品牌故事的结构
  15. 心田花开:小学三年级语文下册古诗词整理【全】
  16. SQL SERVER恢复数据库时出现Exclusive access could not be obtained because the database is in use
  17. 厦门超微服务器维护,超微GPU服务器品牌
  18. 产品管理——产品PM你必须掌握的用户体验五大层
  19. 中标麒麟安装达梦数据库安装
  20. spring实战学习(四)AOP及其实现方式

热门文章

  1. java版mc要多少美元,Minecraft Java版 20w28a 发布
  2. 第一次写博客,专升本软件工程专业学生,以后每天更新,希望自己能找到满意的工作。
  3. PL/SQL基础(1):语法
  4. 单片机中断系统(51为例)
  5. VC++运行库 集32位/64位整合版
  6. Sam-ba烧录工具的使用教程
  7. vue组件销毁重置详解
  8. flask 框架简介
  9. 洛杉矶房价预测-数据快查表
  10. Service Provider Interface(SPI)