实现二叉数和二叉树前序遍历、中序遍历和后序遍历
#include<iostream> using namespace std; struct BiTNode {
int data; BiTNode *lchilde, *rchilde; }; ///前序遍历 void preorderTraverse(BiTNode *T) {
if (T == nullptr) {
return; } cout << T->data << endl; preorderTraverse(T->lchilde); preorderTraverse(T->rchilde); } ///中序遍历 void inorderTraverse(BiTNode *T) {
if (T == nullptr) {
return; } inorderTraverse(T->lchilde); cout << T->data; inorderTraverse(T->rchilde); } ///后序遍历 void postorderTraverse(BiTNode *T) {
if (T == nullptr) {
return; } postorderTraverse(T->lchilde)
;
postorderTraverse
(T
-
>rchilde
)
; cout
<< T
-
>data
;
}
void
createTree
(BiTNode
*
*T
)
{
int ch
; cin
>> ch
;
if
(ch
==
0
)
{
*T
=
nullptr
;
return
;
}
else
{
*T
=
(BiTNode
*
)
malloc
(
sizeof
(BiTNode
)
)
;
(
*T
)
-
>data
= ch
;
createTree
(
&
(
*T
)
-
>lchilde
)
;
createTree
(
&
(
(
*T
)
-
>rchilde
)
)
;
}
}
int
main
(
)
{
BiTNode
*T
;
createTree
(
&T
)
;
//创建一个树 cout
<<
"前序遍历"
<< endl
;
preorderTraverse
(T
)
;
// cout
<<
"中序遍历"
<< endl
;
inorderTraverse
(T
)
; cout
<< endl
; cout
<<
"后序遍历"
<< endl
;
postorderTraverse
(T
)
; cout
<< endl
;
system
(
"pause"
)
;
}
代码仅供参考!