求二叉树的先序遍历

Posted xiaolitongxueyaoshangjin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求二叉树的先序遍历相关的知识,希望对你有一定的参考价值。

求二叉树的先序遍历

Description

 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历

Input

 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的中序遍历序列,第二个字符串表示二叉树的后序遍历序列。 

Output

 输出二叉树的先序遍历序列

Sample

Input 

2
dbgeafc
dgebfca
lnixu
linux

Output 

abdegcf
xnliu

Hint

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 struct node
 5 {
 6     char num;
 7     struct node *l,*r;
 8 };
 9 struct node *f(char j[],int n,char i[])
10 {
11     if(n<=0)
12         return NULL;
13     struct node *root;
14     root=(struct node *)malloc(sizeof(struct node));
15     root->num=j[n-1];
16     int v;
17     for(v=0;v<n;v++)
18         if(i[v]==j[n-1])break;
19     root->l=f(j,v,i);
20     root->r=f(j+v,n-v-1,i+v+1);
21     return root;
22 };
23 
24 void f1(struct node *head)
25 {
26     if(head==NULL)
27         return ;
28     printf("%c",head->num);
29     f1(head->l);
30     f1(head->r);
31 }
32 int main()
33 {
34     int a,b;
35     char i[1000],j[1000];
36     struct node *head;
37     scanf("%d",&b);
38     while(b--)
39     {
40         scanf("%s %s",i,j);
41         a=strlen(i);
42         head=f(j,a,i);
43         f1(head);
44         printf("
");
45     }
46     return 0;
47 }

 

以上是关于求二叉树的先序遍历的主要内容,如果未能解决你的问题,请参考以下文章

根据二叉树的先序遍历和中序遍历还原二叉树并且求二叉树的高度

已知一个二叉树的先序序列和中序序列,怎么求它的后序序列

leetcode二叉树简单题技巧总结

leetcode二叉树简单题技巧总结

根据二叉树的先序遍历结果输出中序遍历

通过遍历序列构造二叉树(扩展二叉树的先序先序和中序后序和中序层序和中序)附可执行完整代码