输入一棵二叉树的前序遍历,中序遍历结果
输出该二叉树的后序遍历结果
关键是采用结构体数组去存二叉树的各个结点。
#include<stdio.h>
#include<string.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lc,*rc;
}BiTNode,*BiTree;
BiTree CreateBiTree(BiTree T,char a[],char b[],int n)
{
int i;
if(n==0)
return NULL;
for(i=0;i<n;i++)
{
if(b[i]==a[0])//i为根节点下标
{
T->data=a[0];
T->lc=CreateBiTree(&T[1],&a[1],&b[0],i);
T->rc=CreateBiTree(&T[i+1],&a[i+1],&b[i+1],n-i-1);
break;
}
}
return T;
}
void last(BiTree q)
{
if(!q) return;
last(q->lc);
last(q->rc);
printf("%c",q->data);
}
int main()
{
BiTNode tree[30];
char a[30],b[30];
while(scanf("%s%s",a,b)==2)
{
memset(tree,'\0',sizeof(tree));
CreateBiTree(tree,a,b,strlen(a));
last(tree);
printf("\n");
}
return 0;
}