#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" ); } }