//
2007-02-24 21:43:25 Accepted 1944 C++ 00:00.00 836K
#include
<
iostream
>
using
namespace
std;
//
树结点
struct
TNode{
char
data; TNode
*
lchild; TNode
*
rchild;};
//
返回root指针
TNode
*
Create(
char
*
preord,
char
*
inord,
int
n){
if
(n
==
0
)
return
NULL; TNode
*
root
=
new
TNode; root
->
data
=
preord[
0
];
char
*
p
=
strchr(inord,preord[
0
]); root
->
lchild
=
Create(preord
+
1
,inord,p
-
inord); root
->
rchild
=
Create(p
-
inord
+
preord
+
1
,p
+
1
,n
-
1
-
(p
-
inord));
return
root;}
void
PostTravel(TNode
*
T){
if
(T
==
NULL)
return
; PostTravel(T
->
lchild); PostTravel(T
->
rchild); putchar(T
->
data);}
void
Destory(TNode
*
T){
if
(T
==
NULL)
return
; Destory(T
->
lchild); Destory(T
->
rchild); delete T;}
int
main(){
char
preord[
30
],inord[
30
];
while
(scanf(
"
%s %s
"
,preord,inord)
!=
EOF){ TNode
*
T
=
Create(preord,inord,strlen(preord)); PostTravel(T); putchar(
'/n
'
); Destory(T); }}
转载请注明原文地址: https://ibbs.8miu.com/read-27381.html