Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
01.05.2014
Размер:
2.96 Кб
Скачать
#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

Соседние файлы в папке Бинарные деревья1