一个函数实现树的非递归前、中、后序遍历
来源:互联网 发布:苹果mac屏幕更换价格 编辑:程序博客网 时间:2024/06/02 19:23
#include<iostream>#define MAX 99using namespace std;struct BTNode { int data; BTNode *lchild, *rchild;};void visit(BTNode *p) {//访问 printf("%d ", p->data);}void Pre_IN_Post_order(BTNode *p,int AA) {//AA=1先序 2中序 3后序 BTNode* sta[MAX];//定义一个栈 int top = -1;//栈顶指针 int flag[MAX] = {};//记录第几次访问,初始化都是0 sta[++top] = p; while (top!=-1) { p = sta[top]; ++flag[top]; if (flag[top] == AA) visit(p); switch (flag[top]) { case 1: if (p->lchild) sta[++top] = p->lchild; break; case 2: if (p->rchild) sta[++top] = p->rchild; break; case 3: flag[top--]=0;break;//为下一个可能入栈的元素进行初始化 } }}int main() { int a[5] = { 1,2,3,4,5 }; BTNode all[9]; for (int i = 0; i < 9; ++i) { all[i].lchild = all[i].rchild = NULL; all[i].data = i; } all[0].lchild = all + 1; all[0].rchild = all + 2; all[1].lchild = all + 3; all[1].rchild = all + 4; all[2].lchild = all + 5; all[2].rchild = all + 6; all[4].lchild = all + 7; all[5].rchild = all + 8; Pre_IN_Post_order(all, 1); cout << endl; Pre_IN_Post_order(all, 2); cout << endl; Pre_IN_Post_order(all, 3); cout << endl;}
阅读全文
0 0
- 一个函数实现树的非递归前、中、后序遍历
- 非递归实现二叉树的后序遍历、前序遍历、中序遍历
- 二叉树非递归前、中、后序遍历实现
- 二叉树 前序遍历的非递归实现 中序遍历的非递归实现 后序遍历的非递归实现 创建二叉树
- java实现树的前序,中序,后序的递归和非递归遍历
- 树的前序,中序,后序遍历的递归以及非递归实现
- 二叉树的前序、中序、后序遍历 递归非递归实现
- 二叉树的前序、中序、后序(递归、非递归)遍历java实现
- 二叉树的前序,中序,后序遍历(递归非递归实现)
- 实现二叉树的前序/中序/后序递归、非递归遍历
- 二叉树的前序,中序,后序遍历。用递归和非递归实现
- 【二叉树遍历算法】——前/中/后序递归与非递归的实现
- JAVA实现二叉树的前、中、后序遍历(递归与非递归)
- 二叉树的非递归【前/中/后 序遍历】
- 树的前序遍历非递归、中序遍历非递归、后序遍历非递归
- 非递归实现前序遍历+中序遍历得到后序遍历的结果
- 二叉树的遍历:前序、中序、后序、层序的非递归实现
- 【二叉树】实现二叉树的前序、中序、后序的非递归遍历
- node/https网络爬虫Promise优化、 nodejs构建https服务器
- Android:GreenDao的使用
- Qt输出打印信息的日志到文件(简单的两种方式)
- 表单和ajax中的post请求&&后台获取数据方法
- kaggle-House Price Prediction
- 一个函数实现树的非递归前、中、后序遍历
- 在Spring Boot中使用数据缓存
- 关于HTTP协议之get/post传输随笔
- csv批量导入mysql命令
- JS的几种排序方法
- jsf和spring的注入问题
- java读取、写入保存、遍历ini文件配置数据 实现数据同步
- BitMap解析图片显示图片
- 生产环境Heartbeat部署安装