#include
#include
#include
#include
#include
//#include
typedef struct
{
int LeafNo;
void *l; //left
void *r; //right
} tree;
tree *root = NULL; //drzewo puste
int LeafLevel=0;
tree *AddLeaf( void )
{
tree *pt;
static int LeafNo = 0;
if ( (pt=(tree*)malloc( sizeof(tree) )) == NULL )
{
printf( "FATAL ERROR: NO MEMORY!!!\n" );
exit(1);
}
pt->LeafNo = (++LeafNo);
pt->l = NULL;
pt->r = NULL;
return pt;
}
void AddBranch( tree *parent )
{
LeafLevel++;
if ( parent->l == NULL )
parent->l = (tree*)AddLeaf();
else
AddBranch( parent->l );
if ( parent->r == NULL )
parent->r = (tree*)AddLeaf();
else
AddBranch( parent->r );
// printf( " %d %d ", ((tree*)parent->l)->LeafNo, ((tree*)parent->r)->LeafNo );
LeafLevel--;
}
void ShowLevel( tree *parent, int Level )
{
LeafLevel++;
if ( LeafLevel > Level )
return;
if ( parent->l )
{
if ( LeafLevel == Level )
printf( " %d/", ((tree*)parent->l)->LeafNo );
else
ShowLevel( parent->l, Level );
}
if ( parent->r )
{
if ( LeafLevel == Level )
printf( "\\%d ", ((tree*)parent->r)->LeafNo );
else
ShowLevel( parent->r, Level );
}
LeafLevel--;
}
void main( void )
{
int i;
tree Root = { 0, NULL, NULL };
for ( i=0; i<3; i++ ) //ilosc poziomow
{
AddBranch( &Root );
// printf( "\n" );
}
for ( i=0; i<5; i++ )
{
LeafLevel = 0;
ShowLevel( &Root, i );
printf( "\n" );
}
}