#include <iostream>
using namespace std ;
struct BiNode
{
char data ;
BiNode *lchild , *rchild ;
} ;
BiNode *BiTree ;
int NodeID ;
BiNode *CreateBiTree (char *c , int n)
{
BiNode *T ;
NodeID ++ ;
if (NodeID > n)
{
return (NULL) ;
}
if (c[NodeID] == '0')
{
return (NULL) ;
}
T = new BiNode ;
T -> data = c[NodeID] ;
T -> lchild = CreateBiTree (c , n) ;
T -> rchild = CreateBiTree (c , n) ;
return (T) ;
}
void PreOrderTraverse (BiNode *T)
{
if (T)
{
cout << T -> data << " ";
PreOrderTraverse (T -> lchild) ;
PreOrderTraverse (T -> rchild) ;
}
}
void InOrderTraverse (BiNode *T)
{
if (T)
{
InOrderTraverse (T -> lchild) ;
cout << T -> data << " ";
InOrderTraverse (T -> rchild) ;
}
}
void PostOrderTraverse (BiNode *T)
{
if (T)
{
PostOrderTraverse (T -> lchild) ;
PostOrderTraverse (T -> rchild) ;
cout << T -> data << " ";
}
}
int main ()
{
int i , SampleNum ;
char c[100] ;
cin >> SampleNum ;
for (i = 1 ; i <= SampleNum ; i ++)
{
cin >> c[i] ;
}
NodeID = 0 ;
BiTree = CreateBiTree (c , SampleNum) ;
PreOrderTraverse (BiTree) ;
cout << endl ;
InOrderTraverse (BiTree) ;
cout << endl ;
PostOrderTraverse (BiTree) ;
return 0 ;
}
转自:
https://www.cnblogs.com/maoguy/p/6002527.html