蓝桥杯训练:简单树——先序和中序遍历转出后序遍历
来源:互联网 发布:java毫秒转换成分钟 编辑:程序博客网 时间:2024/06/06 07:36
问题描述:给出二叉树的先序,中序遍历序列,求出其后序遍历序列
作者:何知令
完成时间:2017年8月1日
输入:首行输入该二叉树节点数量,随后一行输入该二叉树前序序列,后一行输入中序序列
输出:该二叉树后序序列
算法思想:找根节点,在左子树中递归,在右子树中递归
代码:
/*问题描述:给出二叉树的先序,中序遍历序列,求出其后序遍历序列作者:何知令完成时间:2017年8月1日输入:首行输入该二叉树节点数量,随后一行输入该二叉树前序序列,后一行输入中序序列输出:该二叉树后序序列算法思想:找根节点,在左子树中递归,在右子树中递归*/#include <iostream>#include <malloc.h>using namespace std;char pre[100],in[100];typedef struct TreeNode{ struct TreeNode *lchild; struct TreeNode *rchild; char data;} BTNode;BTNode * CreateBT(char *pre,char *in,int n){ BTNode *b; char r,*p; int k; if(n<=0)return NULL; r=*(pre);//根节点值 b=(BTNode *)malloc(sizeof(BTNode));//申请一个BTNode类型的存储空间 b->data=r; for(p=in; p<in+n; p++) if(*p==r) break; k=p-in;//该根节点的左子树节点数量 b->lchild=CreateBT(pre+1,in,k);//对其左子树进行建树 b->rchild=CreateBT(pre+k+1,p+1,n-k-1);//对其右子树进行建树 return b;}void postVistBT(BTNode *b){ if(b!=NULL) { preVistBT(b->lchild); preVistBT(b->rchild); cout<<b->data<<' '; }}int main(){ int n,i; BTNode *bt; cin>>n; for(i=0; i<n; i++) cin>>pre[i]; for(i=0; i<n; i++) cin>>in[i]; bt=CreateBT(pre,in,n); postVistBT(bt); return 0;}
知识点总结:二叉树的遍历方式及二叉树的建立
学习心得:还是看了书上的代码才弄出来的
阅读全文
0 0
- 蓝桥杯训练:简单树——先序和中序遍历转出后序遍历
- 树的遍历—先序遍历、中序遍历、后序遍历
- 二叉树遍历(先序遍历、中序遍历、后序遍历)——递归方法和非递归方法
- 二叉树树的先序遍历,中序遍历和后序遍历
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 中序遍历和先序遍历/后序遍历构建二叉树
- 二叉树已知先序遍历和中序遍历得到后序遍历
- 根据中序遍历和后序遍历求二叉树的先序遍历
- 二叉树中的先序遍历、中序遍历和后序遍历关系
- NYOJ 366 D的小L
- laravel 之 Eloquent 模型修改器和序列化
- 8月3日总结
- 万维链的技术理念
- 数据延时和传播范围
- 蓝桥杯训练:简单树——先序和中序遍历转出后序遍历
- 进入App时,白屏解决
- mycalender android 自定义日历控件
- 关于Python类属性与实例属性的讨论
- (hdu6075) 2017杭电多校联赛第四场-Questionnaire 思维题
- 微信----简单自动回复功能emoji和文本处理demo
- Lua用法小结
- 【Python小程序】收发邮件并控制计算机
- hadoop自定义对象序列化Writable和WritableComparable