二叉树遍历的递归算法
递归算法的三要素:参数和返回值;终止条件;单层递归的逻辑。
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;
}
二叉树遍历的递归算法相关推荐
- 数据结构上机实践第九周项目2 - 二叉树遍历的递归算法
二叉树遍历的递归算法 递归问题总会成为我们的难点,代码量少,思维量确是很大,难是在所难免的,所以,在思维理解的同时结合实现代码理解,这样就很有可能让我们打开思路,理解的更深,本次实践将在二叉树算法的基 ...
- 第九周项目实践2 二叉树遍历的递归算法
#ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED#define MaxSize 100 typedef char ElemType; typedef ...
- 二叉树遍历方法——前、中、后序遍历(图解)
目录 一.前序遍历 (1)递归版本 (2)非递归版本 二.中序遍历 (1)递归版本 (2)非递归版本 三.后序遍历 (1)递归版本 (2)非递归版本 四.总结 五.测试程序 六.程序输出 二叉树的遍历 ...
- 二叉树遍历的非递归算法
大一下半期数据结构 知识点 递归算法虽然简单,但一般而言,其执行效率并不高.对于二叉树的遍历操作,可以仿照递归算法执行过程中工作栈的状态变化得到非递归算法. 一.前序遍历非递归算法 二叉树前序遍历非递 ...
- (※)中序遍历二叉树的非递归算法
在此之前,我们已经学习了中序遍历二叉树的递归算法,相信大家已经将其牢牢掌握了. 除了使用递归思想作为求解问题的钥匙,还可以借助栈来以非递归方式实现该问题的求解. 首先,我们要讨论存储二叉树结点信息的栈 ...
- 二叉树中序遍历非递归算法实现详解
二叉树是数据结构中的经典结构,也是应用很广泛的结构之一.二叉树具有一些特定的性质,如 n0 = n2+1,在一些应用中,常常要求在树中查找具有某些特征的节点,或者对树中节点进行处理,即遍历二叉树的问题 ...
- 二叉树的后序遍历(非递归算法)
/* 后序遍历(非递归算法) ①先序遍历顺序:根节点-左孩子-右孩子 ②后序遍历顺序:左孩子-右孩子-根节点 ③后序遍历倒过来:根节点-右孩子-左孩子 ①和③对 ...
- C++实现二叉树中序遍历非递归算法
/*二叉树的中序遍历非递归算法目标遍历的二叉树:1/ \2 4/ \3 5 待输出结果为3,2,5,1,41.首先得用上面定义的结构体把这颗树表示出来2.表示出这颗树后在调用二叉树的中序遍历非递归算法 ...
- 数据结构源码笔记(C语言):二叉树遍历
//二叉树遍历 #include<stdio.h> #include<malloc.h> #include<malloc.h> #define MaxSize 10 ...
最新文章
- java 环境部署——java源码包的安装——java-rpm包的安装
- using语句之-释放资源和异常处理
- 《c语言从入门到精通》看书笔记——第14章 文件
- 如何在 ASP.NET Core 中使用 NLog 的高级特性
- Javascript表达式中连续的 和 || 之赋值区别
- 【Flink】Disconnect from JobManager responsible for
- matlab mrst 工具箱 用共轭梯度法 找极值点
- JavaWeb开发中的乱码问题
- MySQL时区错误导致server time zone value 'Öйú±ê׼ʱ¼ä' 错误
- findbug规则说明
- 多路增广 Dinic算法
- 解决网页内容无法复制的方法
- WiFi 的认证方法
- 代写品牌故事-品牌故事的结构
- 心田花开:小学三年级语文下册古诗词整理【全】
- SQL SERVER恢复数据库时出现Exclusive access could not be obtained because the database is in use
- 厦门超微服务器维护,超微GPU服务器品牌
- 产品管理——产品PM你必须掌握的用户体验五大层
- 中标麒麟安装达梦数据库安装
- spring实战学习(四)AOP及其实现方式