Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Бинарные деревья1 / BINTREE
.H #include"globalbt.h"
#include<stdio.h>
#include<stdlib.h>
struct Node // 㧥«:
{ Elem Info; // = ᮤҐа¦Ё¬®Ґ
Node *LSub; // = «Ґў®Ґ Ї®¤¤ҐаҐў®
Node *RSub; // = Їа ў®Ґ Ї®¤¤ҐаҐў®
};// Node
typedef Node *BinT;
void Otkaz ( int n )
// ўлўҐбвЁ б®®ЎйҐЁҐ ЇаЁ Ї®ЇлвЄҐ ўлЇ®«ҐЁп
// Ґ¤®ЇгбвЁ¬ле ®ЇҐа жЁ© Ё § ўҐаиЁвм а Ў®вг Їа®Ја ¬¬л
{
printf("\n");
switch (n)
{case 1 : printf( "Ћ’ЉЂ‡ : RootBT( Null_Bin_Tree ) !");break;
case 2 : printf( "Ћ’ЉЂ‡ : LeftBT( Null_Bin_Tree ) !");break;
case 3 : printf( "Ћ’ЉЂ‡ : RightBT( Null_Bin_Tree ) !");break;
case 4 : printf( "Ћ’ЉЂ‡ : ЁбзҐаЇ Ї ¬пвм !");break;
case 5 : printf( "Ћ’ЉЂ‡ : SetLeft( Null_Bin_Tree )");break;
case 6 : printf( "Ћ’ЉЂ‡ : SetLeft( Not ( Null_Bin_Tree ( LeftBT ) ) )");break;
case 7 : printf( "Ћ’ЉЂ‡ : SetRight( Null_Bin_Tree )");break;
case 8 : printf( "Ћ’ЉЂ‡ : SetRight( Not ( Null_Bin_Tree ( RightBT ) ) )");break;
default: printf( "Ћ’ЉЂ‡ : ?");
}
//exit(1);гЎа ¤«п вҐбвЁа®ў Ёп!!!!
}// Otkaz
BinT CreateBT()
//ᮧ¤ вм Їгб⮥ ¤ҐаҐў®
{ return 0; }//CreateBT
int NullBT ( BinT t )
//а®ўҐаЁвм ¤ҐаҐў® Їгбв®вг
{ return ( t==0 );}// NullBT
Elem RootBT ( BinT t )
// ўл¤Ґ«Ёвм Є®аҐм ¤ҐаҐў
// ®вЄ § - Null
// Pred: not Null(t)
{ if ( t ) return( t->Info ); else Otkaz(1); return 0; }// RootBT
BinT LeftBT ( BinT t )
/* ўл¤Ґ«Ёвм «Ґў®Ґ Ї®¤¤ҐаҐў®
®вЄ § - Null}
Pred: not Null(t) */
{ if ( t ) return( t->LSub ); else Otkaz(2); return 0; }// LeftBT
BinT RightBT ( BinT t )
/* ўл¤Ґ«Ёвм Їа ў®Ґ Ї®¤¤ҐаҐў®
®вЄ § - Null
Pred: not Null(t) */
{ if ( t ) return( t->RSub ); else Otkaz(3); return 0;}// RightBT
BinT ConsBT ( Elem e, BinT LS, BinT RS )
/* Є®бвагЄв®а
®вЄ § - Ґ еў в Ґв Ї ¬пвЁ ¤«п ®ў®Ј® н«Ґ¬Ґв */
{ BinT b=new( Node );
b->Info=e; b->LSub=LS; b->RSub=RS;
return ( b );
//else Otkaz(4);
}// ConsBT
void DestroyBT ( BinT &b )
//®зЁбвЁвм Ї ¬пвм § Ё¬ Ґ¬го н«Ґ¬Ґв ¬Ё ¤ҐаҐў }
{if ( b )
{ DestroyBT ( b->LSub );
DestroyBT ( b->RSub );
delete ( b );
}
}//DestroyBT
//----------------„®Ї®«ЁвҐ«млҐ дгЄжЁЁ-----------------------------------
BinT MakeRoot ( Elem e )
/* ᮧ¤ вм Є®аҐм ¤ҐаҐў
®вЄ § - Ґ еў в Ґв Ї ¬пвЁ ¤«п ®ў®Ј® н«Ґ¬Ґв */
{ BinT b=new( Node );
b->Info=e; b->LSub=0; b->RSub=0;
return b;
// else Otkaz(4);
}// MakeRoot
void SetLeft ( Elem e, BinT b )
/* Ї®¤ўҐбЁвм ®ўл© 㧥« ў «Ґў®Ґ Ї®¤¤ҐаҐў®
®вЄ § - not Null, not Null(LeftBT) */
{ if ( !b ) Otkaz(5);
else if ( !LeftBT( b ) ) b->LSub=MakeRoot ( e );
else Otkaz(6);
}// SetLeft
void SetRight ( Elem e, BinT b )
// { Ї®¤ўҐбЁвм ®ўл© 㧥« ў Їа ў®Ґ Ї®¤¤ҐаҐў®
// ®вЄ § - not Null, not Null(RightBT) }
{ if ( !b ) Otkaz(7);
else if ( !RightBT( b ) ) b->RSub=MakeRoot ( e );
else Otkaz(8);
}// SetRight
#include<stdio.h>
#include<stdlib.h>
struct Node // 㧥«:
{ Elem Info; // = ᮤҐа¦Ё¬®Ґ
Node *LSub; // = «Ґў®Ґ Ї®¤¤ҐаҐў®
Node *RSub; // = Їа ў®Ґ Ї®¤¤ҐаҐў®
};// Node
typedef Node *BinT;
void Otkaz ( int n )
// ўлўҐбвЁ б®®ЎйҐЁҐ ЇаЁ Ї®ЇлвЄҐ ўлЇ®«ҐЁп
// Ґ¤®ЇгбвЁ¬ле ®ЇҐа жЁ© Ё § ўҐаиЁвм а Ў®вг Їа®Ја ¬¬л
{
printf("\n");
switch (n)
{case 1 : printf( "Ћ’ЉЂ‡ : RootBT( Null_Bin_Tree ) !");break;
case 2 : printf( "Ћ’ЉЂ‡ : LeftBT( Null_Bin_Tree ) !");break;
case 3 : printf( "Ћ’ЉЂ‡ : RightBT( Null_Bin_Tree ) !");break;
case 4 : printf( "Ћ’ЉЂ‡ : ЁбзҐаЇ Ї ¬пвм !");break;
case 5 : printf( "Ћ’ЉЂ‡ : SetLeft( Null_Bin_Tree )");break;
case 6 : printf( "Ћ’ЉЂ‡ : SetLeft( Not ( Null_Bin_Tree ( LeftBT ) ) )");break;
case 7 : printf( "Ћ’ЉЂ‡ : SetRight( Null_Bin_Tree )");break;
case 8 : printf( "Ћ’ЉЂ‡ : SetRight( Not ( Null_Bin_Tree ( RightBT ) ) )");break;
default: printf( "Ћ’ЉЂ‡ : ?");
}
//exit(1);гЎа ¤«п вҐбвЁа®ў Ёп!!!!
}// Otkaz
BinT CreateBT()
//ᮧ¤ вм Їгб⮥ ¤ҐаҐў®
{ return 0; }//CreateBT
int NullBT ( BinT t )
//а®ўҐаЁвм ¤ҐаҐў® Їгбв®вг
{ return ( t==0 );}// NullBT
Elem RootBT ( BinT t )
// ўл¤Ґ«Ёвм Є®аҐм ¤ҐаҐў
// ®вЄ § - Null
// Pred: not Null(t)
{ if ( t ) return( t->Info ); else Otkaz(1); return 0; }// RootBT
BinT LeftBT ( BinT t )
/* ўл¤Ґ«Ёвм «Ґў®Ґ Ї®¤¤ҐаҐў®
®вЄ § - Null}
Pred: not Null(t) */
{ if ( t ) return( t->LSub ); else Otkaz(2); return 0; }// LeftBT
BinT RightBT ( BinT t )
/* ўл¤Ґ«Ёвм Їа ў®Ґ Ї®¤¤ҐаҐў®
®вЄ § - Null
Pred: not Null(t) */
{ if ( t ) return( t->RSub ); else Otkaz(3); return 0;}// RightBT
BinT ConsBT ( Elem e, BinT LS, BinT RS )
/* Є®бвагЄв®а
®вЄ § - Ґ еў в Ґв Ї ¬пвЁ ¤«п ®ў®Ј® н«Ґ¬Ґв */
{ BinT b=new( Node );
b->Info=e; b->LSub=LS; b->RSub=RS;
return ( b );
//else Otkaz(4);
}// ConsBT
void DestroyBT ( BinT &b )
//®зЁбвЁвм Ї ¬пвм § Ё¬ Ґ¬го н«Ґ¬Ґв ¬Ё ¤ҐаҐў }
{if ( b )
{ DestroyBT ( b->LSub );
DestroyBT ( b->RSub );
delete ( b );
}
}//DestroyBT
//----------------„®Ї®«ЁвҐ«млҐ дгЄжЁЁ-----------------------------------
BinT MakeRoot ( Elem e )
/* ᮧ¤ вм Є®аҐм ¤ҐаҐў
®вЄ § - Ґ еў в Ґв Ї ¬пвЁ ¤«п ®ў®Ј® н«Ґ¬Ґв */
{ BinT b=new( Node );
b->Info=e; b->LSub=0; b->RSub=0;
return b;
// else Otkaz(4);
}// MakeRoot
void SetLeft ( Elem e, BinT b )
/* Ї®¤ўҐбЁвм ®ўл© 㧥« ў «Ґў®Ґ Ї®¤¤ҐаҐў®
®вЄ § - not Null, not Null(LeftBT) */
{ if ( !b ) Otkaz(5);
else if ( !LeftBT( b ) ) b->LSub=MakeRoot ( e );
else Otkaz(6);
}// SetLeft
void SetRight ( Elem e, BinT b )
// { Ї®¤ўҐбЁвм ®ўл© 㧥« ў Їа ў®Ґ Ї®¤¤ҐаҐў®
// ®вЄ § - not Null, not Null(RightBT) }
{ if ( !b ) Otkaz(7);
else if ( !RightBT( b ) ) b->RSub=MakeRoot ( e );
else Otkaz(8);
}// SetRight
Соседние файлы в папке Бинарные деревья1