#include<bits/stdc++.h>
using namespace std;
typedef struct treeNode {
char key;
struct treeNode *left;
struct treeNode *right;
} treeNode;
char a[26] = {0};
char b[26] = {0};
int length = 0;
int aindex = 0;
int FindIndex(char num) {
int i;
for(i = 0; i<=length; i++)
if(b[i] == num)
return i;
return -1;
}
treeNode* CreateTree(int l,int r) {
if(l <= r) {
treeNode *t = (treeNode*)malloc(sizeof(treeNode));
t->left = t->right = NULL;
t->key = a[aindex++];
int bindex = FindIndex(t->key);
t->left = CreateTree(l,bindex - 1);
t->right = CreateTree(bindex+1,r);
return t;
}
return NULL;
}
void fun(treeNode* t) {
if(t) {
printf("(");
fun(t->left);
printf("%c",t->key);
fun(t->right);
printf(")");
}
}
void f(treeNode*t) {
if(t) {
fun(t->left);
printf("%c",t->key);
fun(t->right);
}
}
int main() {
int i,n;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
while(scanf("%d",&n)!=EOF)
while(n--) {
scanf("%s %s",&a[0],&b[0]);
for(i = 0; i<26; i++) {
aindex = 0;
if(a[i] == '\0') {
length = i;
break;
}
}
f(CreateTree(0,length-1));
printf("\n");
}
return 0;
}
问题 F: 转换二叉树
最新推荐文章于 2022-11-19 20:30:00 发布