OJ题目:click here~~
根据先序序列建立二叉树,先序序列标出空树,输出中序序列。
AC_CODE
char str[108] ;
typedef struct Node{
int x ;
Node *left ;
Node *right ;
}BiTNode, *BiTree;
void CreateBiTree(BiTree &T , int &index , int &n){
if(index == n) return ;
if(str[index] == '#'){
T = NULL ;
index++ ;
}
else
{
T = (BiTree)malloc(sizeof(BiTNode)) ;
T->x = str[index] ;
index++ ;
CreateBiTree(T->left , index , n) ;
CreateBiTree(T->right , index , n) ;
}
return ;
}
void Visit(BiTree &T){
if(T->x != '#'){
printf("%c ",T->x) ;
}
}
void InOrder(BiTree &T){
if(T != NULL){
InOrder(T->left) ;
Visit(T) ;
InOrder(T->right) ;
}
return ;
}
int main(){
while(scanf("%s" , str) != EOF){
int len = strlen(str) ;
BiTree T ;
int index = 0 ;
CreateBiTree(T , index , len) ;
InOrder(T) ;
puts("");
}
}