数据结构之已知二叉树前中序列求后序
来源:互联网 发布:战网客户端 mac 编辑:程序博客网 时间:2024/05/21 18:16
数据结构实验之求二叉树后序遍历和层次遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历。
输入
输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列。
输出
每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列
示例输入
2abdegcfdbgeafcxnliulnixu
示例输出
dgebfcaabcdefglinuxxnuli
提示
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>char pre[1000],mid[1000];//前序和后序struct node{ char data; struct node *lc,*rc;};//已知前中序列求后序方法一/*struct node *check(char pre[],char mid[],int len){ struct node *root; if(len<=0) { return NULL; } char *p; int k; root=(struct node *)malloc(sizeof(struct node)); root->data=pre[0]; for(p=mid;p!=NULL;p++)//从中序中查找与前序中树根节点相同的值 { if(*p==*pre) break; } k=p-mid; //通过递归调用查找子数的树根 root->lc=check(pre+1,mid,k);//无限递归调用左子树 root->rc=check(pre+k+1,p+1,len-k-1);//无限递归调用右子树 return root;}*///已知前中序列求后序方法二struct node *check(char pre[],char mid[],int len){ struct node *root; if(len<=0) { return NULL; } char *p; int k; root=(struct node *)malloc(sizeof(struct node)); root->data=pre[0]; int i; for(i=0;i<len;i++)//从中序中查找与前序中树根节点相同的值 { if(mid[i]==pre[0]) break; } //通过递归调用查找子数的树根 root->lc=check(pre+1,mid,i);//无限递归调用左子树 root->rc=check(pre+i+1,mid+i+1,len-i-1);//无限递归调用右子树 return root;}//后序输出void lastput(struct node *root){ if(root!=NULL) { lastput(root->lc); lastput(root->rc); printf("%c",root->data); }}//层序输出void septum(struct node *root){ int yes,no; yes=no=0; struct node *q[1000]; q[yes++]=root; while(yes>no) { if(q[no]!=NULL) { printf("%c",q[no]->data); q[yes++]=q[no]->lc; q[yes++]=q[no]->rc; } no++; }}int main(){ int n; scanf("%d",&n); while(n--) { struct node *root1; scanf("%s %s",&pre,&mid); int len; len=strlen(pre); root1=check(pre,mid,len); lastput(root1); printf("\n"); septum(root1); printf("\n"); } return 0;}
0 0
- 数据结构之已知二叉树前中序列求后序
- 已知二叉树先序序列和中序序列,求后序序列
- 已知二叉树先序和中序序列 求后序序列
- 数据结构学习笔记(9)---已知二叉树的遍历序列,恢复二叉树
- 数据结构与算法学习之二叉树的遍历:已知先序、中序、后序序列三者中的两种求另外一种遍历的算法
- 二叉树-已知前序序列和中序序列,求后序序列
- 已知先序中序序列求后序序列
- 数据结构之二叉树: 二叉树序列化
- 二叉树 已知两个序列,建
- 已知二叉树的前序和中序序列,构建二叉树并求后序序列,java实现。
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 已知先序序列、中序序列创建二叉树
- 【郝斌数据结构自学笔记】70-74_已知两种遍历序列求原始二叉树概述_已知先序和中序求后序_已知中序和后序求先序_树的应用简单介绍
- 已知前序中序序列,求后序遍历序列
- 【二叉树】已知二叉树前序序列和中序序列,重建唯一二叉树
- 二叉树遍历之已知前序中序求后序
- 已知两种遍历序列求原始二叉树
- 已知两种遍历序列求原始二叉树
- SeaJS 里版本号和时间戳管理的最佳实践
- 使用doxygen生成代码工程文档并显示相关注释
- 深圳地税申报流程
- Sublime Text中文乱码
- telnet服务器源码安装
- 数据结构之已知二叉树前中序列求后序
- html meat标签自适应手机
- HDU 1506 不会则直方图最大矩形
- 翻译测试
- 常用SQL语句总结(2)
- Android 去除手机系统自带动画
- 指向指针的指针!!(能让初学者绕晕的东西)
- 数据结构上机实验之二分查找
- HDU1505 1506升级版