# Include <stdio. h>
# Include <stdlib. h>
Typedef char telemtype;
Typedef struct bitnode
{
Telemtype data;
Struct bitnode * lchild, * rchild;
} Bitnode, * bitree;
Void createbitree (bitree * t)
{
// Input the value of the node in the binary tree in the first order, # Representing the empty tree
Char ch;
Scanf ("% C", & Ch );
If ('#' = CH)
{
* T = NULL;
}
Else
{
* T = (bitnode *) malloc (sizeof (bitnode ));
(* T)-> DATA = CH;
Createbitree (& (* t)-> lchild );
Createbitree (& (* t)-> rchild );
}
}
Void printelement (telemtype E)
{
Printf ("% C", e );
}
Void preordertraverse (bitree T, void (* visit) (telemtype E ))
{
// Recursive algorithm for traversing binary tree T in line Order, and visit method is called for each element
If (t)
{
Visit (t-> data );
Preordertraverse (t-> lchild, visit );
Preordertraverse (t-> rchild, visit );
}
}
Void inordertraverse (bitree T, void (* visit) (telemtype E ))
{
If (t)
{
Inordertraverse (t-> lchild, visit );
Visit (t-> data );
Inordertraverse (t-> rchild, visit );
}
}
Void postordertraverse (bitree T, void (* visit) (telemtype E ))
{
If (t)
{
Postordertraverse (t-> lchild, visit );
Postordertraverse (t-> rchild, visit );
Visit (t-> data );
}
}
Int main (void)
{
Bitree T = NULL;
Createbitree (& T );
Printf ("sequential traversal :");
Preordertraverse (T, printelement );
Printf ("sequential traversal :");
Inordertraverse (T, printelement );
Printf ("sequential traversal :");
Postordertraverse (T, printelement );
}
Binary tree traversal