mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Create 2255_cbs612537.cpp
From http://blog.csdn.net/cbs612537/article/details/8529560
This commit is contained in:
parent
3a5bd97e46
commit
da6ba401ff
63
POJ/2255_cbs612537.cpp
Normal file
63
POJ/2255_cbs612537.cpp
Normal file
|
@ -0,0 +1,63 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
typedef struct TreeNode
|
||||
{
|
||||
char data;
|
||||
struct TreeNode *lchild;
|
||||
struct TreeNode *rchild;
|
||||
} Node, *PNode;
|
||||
|
||||
char preorder[28]; //存放前序序列
|
||||
char infix[28]; //存放中序序列
|
||||
char *Pr;
|
||||
|
||||
void build(char *in, char *pr, PNode *tr);
|
||||
void postordertraversal(PNode T);
|
||||
|
||||
int main()
|
||||
{
|
||||
//先建树、再后序遍历输出
|
||||
PNode T;
|
||||
|
||||
while(scanf("%s %s", &preorder[1], &infix[1]) == 2)
|
||||
{
|
||||
build(&infix[1], &preorder[1], &T);
|
||||
postordertraversal(T);
|
||||
printf("\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void build(char *in, char *pr, PNode *tr)
|
||||
{
|
||||
char *p = in;
|
||||
Pr = pr;
|
||||
if (*in == 0)
|
||||
{
|
||||
*tr = NULL;
|
||||
return;
|
||||
}
|
||||
while (1)
|
||||
{
|
||||
if (*in == *Pr)
|
||||
{
|
||||
(*tr) = (PNode)malloc(sizeof(Node));
|
||||
(*tr)->data = *Pr;
|
||||
*in = 0;
|
||||
break;
|
||||
}
|
||||
in++;
|
||||
}
|
||||
Pr = Pr + 1;
|
||||
build(p, Pr, &(*tr)->lchild);
|
||||
build(in+1, Pr, &(*tr)->rchild);
|
||||
}
|
||||
|
||||
void postordertraversal(PNode T)
|
||||
{
|
||||
if (T == NULL)
|
||||
return;
|
||||
postordertraversal(T->lchild);
|
||||
postordertraversal(T->rchild);
|
||||
printf("%c", T->data);
|
||||
}
|
Loading…
Reference in New Issue
Block a user