# Include <stdio. h>
# Include <stdlib. h>
# Define elemtype char
// Node declaration, data field, left child pointer, right child pointer
Typedef struct bitnode {
Char data;
Struct bitnode * lchild, * rchild;
} Bitnode, * bitree;
// Create a binary tree in sequence
Bitree createbitree (){
Char ch;
Bitree T;
Scanf ("% C", & Ch );
If (CH = '#') t = NULL;
Else {
T = (bitree) malloc (sizeof (bitnode ));
T-> DATA = CH;
T-> lchild = createbitree ();
T-> rchild = createbitree ();
}
Return t; // return the root node
}
// Traverse Binary Trees in ascending order
Void preordertraverse (bitree t ){
If (t ){
Printf ("% C", T-> data );
Preordertraverse (t-> lchild );
Preordertraverse (t-> rchild );
}
}
// Sequential Traversal
Void inordertraverse (bitree t ){
If (t ){
Inordertraverse (t-> lchild );
Printf ("% C", T-> data );
Inordertraverse (t-> rchild );
}
}
// Post-order traversal
Void postordertraverse (bitree t ){
If (t ){
Postordertraverse (t-> lchild );
Postordertraverse (t-> rchild );
Printf ("% C", T-> data );
}
}
Void main (){
Bitree T;
T = createbitree (); // create
Printf ("\ npreorder: \ n ");
Preordertraverse (t); // output
Printf ("\ ninorder: \ n ");
Inordertraverse (t );
Printf ("\ npostorder: \ n ");
Postordertraverse (t );
}
Build binary tree and recursive Traversal