求二叉树的先序遍历
来源:互联网 发布:自动打电话骚扰软件 编辑:程序博客网 时间:2024/05/17 02:34
求二叉树的先序遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
输入
输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的中序遍历序列,第二个字符串表示二叉树的后序遍历序列。
输出
输出二叉树的先序遍历序列
示例输入
2dbgeafcdgebfcalnixulinux
示例输出
abdegcfxnliu
下面是通俗的求法就是先建树。
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <malloc.h>struct node{ char data; struct node *l,*r;};struct node *creat(struct node *root,char *s,char *s1,int n){ if(n<=0) return NULL; root=(struct node*)malloc(sizeof(struct node)); root->data=s1[n-1]; int p=strchr(s,s1[n-1])-s; root->l=creat(root->l,s,s1,p); root->r=creat(root->r,s+p+1,s1+p,n-p-1); return root;};void xianxu(struct node *p){ if (p) { printf("%c",p->data); xianxu(p->l); xianxu(p->r); }}int main(){ int len,n; char str1[100],str2[100]; scanf("%d",&n); while(n--) { struct node *head; head = (struct node *)malloc(sizeof(struct node )); scanf("%s %s",str1,str2); len = strlen(str2); head = creat(head,str1,str2,len); xianxu(head); printf("\n"); } return 0;}
还有一个非主流的求法:
自己理解吧
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <malloc.h>struct node{ char data; struct node *l,*r;};char s[100];int t=0;struct node *creat(int len,char *str1,char *str2){ int k; if(len<=0) return NULL; struct node *head; head = (struct node *)malloc(sizeof(struct node)); head->data = *str1; char *p; for(p = str2;p!=NULL;p++) if(*p==*str1) break; k = p-str2; head->l = creat(k,str1+1,str2); head->r = creat(len-k-1,str1+k+1,p+1); return head;}void houxu(struct node *p){ if (p) { houxu(p->l); houxu(p->r); s[t++] = p->data; }}int main(){ int i,len,n; char str1[100],str2[100],str3[100],str4[100]; scanf("%d",&n); while(n--) { struct node *head; head = (struct node *)malloc(sizeof(struct node )); scanf("%s %s",str1,str2); len = strlen(str2); for(i=0;i<len;i++) { str3[i] = str2[len-1-i]; str4[i] = str1[len-1-i]; } head = creat(len,str3,str4); t = 0; houxu(head); for(i=len-1;i>=0;i--) printf("%c",s[i]); printf("\n"); } return 0;}
0 0
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 全程软件测试实践:从需求到运营
- 宏定义的黑魔法 - 宏菜鸟起飞手册
- 数据结构上机测试4.1:二叉树的遍历与应用1
- 计算器
- NVIDIA Development Tools
- 求二叉树的先序遍历
- HDU 1272-小希的迷宫 并查集初级
- NVIDIA Utilities Tools
- UIScrollview 和其view上的事件冲突问题
- NVIDIA Content Creation Tools
- Doing Homework again
- 寒假训练--字典树--A - Immediate Decodability
- 嵌入式LINUX驱动课程大纲
- (待解决)android:actionBarStyle requires API level 11