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