求二叉树的层次遍历
2018-01-24 09:40
246 查看
求二叉树的层次遍历
Time Limit: 1000MSMemory Limit: 65536KB
[align=center][/align]
Problem Description
已知一颗二叉树的前序遍历和中序遍历,求二叉树的层次遍历。Input
输入数据有多组,输入T,代表有T组测试数据。每组数据有两个长度小于50的字符串,第一个字符串为前序遍历,第二个为中序遍历。Output
每组输出这颗二叉树的层次遍历。Example Input
2 abc bac abdec dbeac
Example Output
abc abcde
#include <stdio.h> #include <stdlib.h> #include <string.h> int k; char a[100],b[100]; struct bittree { char data; struct bittree * ltree,* rtree; }; void cengci(struct bittree * root) { if(root==NULL) { return ; } int f,r; f=1;r=1; struct bittree * s[100],*p; s[1]=root; while(f<=r) { p=s[f++]; printf("%c",p->data); if(p->ltree!=NULL) { s[++r]=p->ltree; } if(p->rtree!=NULL) { s[++r]=p->rtree; } } } struct bittree * create(int len,char * a,char * b) { struct bittree * root; int i; root=(struct bittree *)malloc(sizeof(struct bittree)); if(len==0) { root=NULL; } else { root->data=a[0]; for(i=0;i<len;i++) { if(root->data==b[i]) { break; } } root->ltree=create(i,a+1,b); root->rtree=create(len-i-1,a+i+1,b+i+1); } return root; } int main() { int t,len; struct bittree * root; scanf("%d",&t); getchar(); while(t--) { k=0; gets(a); gets(b); len=strlen(a); root=create(len, a, b); cengci(root); printf("\n"); } return 0; }
相关文章推荐
- 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 二叉树的4种遍历方式(前序、中序、后序、层次)Java版
- 层次遍历二叉树-三种不同的方法
- 二叉树的层次遍历
- 数据结构 树 层次遍历二叉树 C语言版
- 二叉树的层次遍历
- 二叉树的层次遍历
- 第十一周项目1(1)二叉树的层次遍历算法
- 二叉树的层次遍历
- 层次遍历二叉树(编程之美3.10)
- 二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的锯齿形层次遍历
- 二叉树的遍历(递归,非递归,层次)
- 二叉树的层次遍历
- 按层次生成、遍历二叉树
- 二叉树的先序、中序、后序以及层次遍历
- 二叉树的高度 java 利用递归和层次遍历两种方法
- LeetCode OJ 之 Binary Tree Zigzag Level Order Traversal (二叉树的曲线层次遍历)
- 数据结构--二叉树--层次遍历二叉树(链式遍历--队列)