?
給出一個前序遍歷,給出一個中序遍歷,要求把樹輸出
給出算法答案如下:
main()

{
Datatype?preorder[n],?inorder[n];
Struct?link
*
BT;
if
(n?
>
?
0
)
BT?
=
?creatBT(
0
,?n
-
1
,?
0
,?n?
-
?
1
);
return
(BT);
}
struct
?link
*
?createBT(
int
?prestart,?
int
?preend,?
int
?instart,?
int
?inend)

{
p?
=
?(
struct
?link
*
)malloc(
sizeof
(
struct
?link);
p
->
lchild?
=
?
null
;
p
->
rchild?
=
?
null
;
p
->
data?
=
?preorder[prestart];
if
(prestart?
>
?preend)

{?
??
for
(
int
?i?
=
?instart;?inorder[i]?
!=
?preorder[start];?i
++
);
?
if
(i?
>
?instart)
???p
->
lchild?
=
?createBT(prestart?
+
?
1
,?prestart
-
?instart?
+
?
1
,?instart,?i?
-
?
1
);
?
if
(i?
<
?inend)
??p
->
rchild?
=
?createBT(prestart?
-
?instart?
+
?i?
+
?
1
,?preend,?i?
+
?
1
,?inend);????????
}
??
?
return
?(p):
}