Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
01.05.2014
Размер:
8.56 Кб
Скачать
 #include"bintree.h"
 #include<conio.h>

  FILE *fin;

 BinT EnterBT()
 // ўў®¤ г§«®ў ў Љ‹Џ-Ї®ап¤ЄҐ Ё Ї®бв஥­ЁҐ ЎЁ­ а­®Ј® ¤ҐаҐў 
 {
  Elem c;
  if (fscanf ( fin,"%c", &c ))
   {
    if (c=='/') return 0;
     else { BinT b1=EnterBT();
            BinT b2=EnterBT();
             return ConsBT ( c,b1 ,b2);
          }
   }
  return 0;
 }// EnterBT

 void OutBT ( BinT b )
 // ўлў®¤ г§«®ў ЎЁ­ а­®Ј® ¤ҐаҐў  ў Љ‹Џ-Ї®ап¤ЄҐ
 {
  if ( !NullBT( b ) )
   {
     printf( "%c", RootBT ( b ) );
     OutBT( LeftBT  ( b ) );
     OutBT( RightBT ( b ) );
   }
   else printf( "/" );
 }// EnterBT

 void  DisplayBT ( BinT b, int n )
 /* ўлў®¤ Ї®бва®з­®Ј® Ё Ї®ўҐа­гв®Ј® Ё§®Ўа ¦Ґ­Ёп ЎЁ­ а­®Ј® ¤ҐаҐў 
   ЎҐ§ ў®§ўа в  Є®аҐвЄЁ
  n - га®ўҐ­м г§«     */
 {
  if ( !NullBT ( b ))
   {
     printf( " %c", RootBT( b ) );
     if ( NullBT ( RightBT ( b ) ) )
      printf("\n");                            // ў­Ё§
      else DisplayBT( RightBT ( b ), n+1);
     if ( !NullBT ( LeftBT ( b ) ) )
       {
        for (int i=1;i<=n;i++)  printf("  "); // ўЇа ў®
        DisplayBT( LeftBT ( b ), n+1);
       };
   }
 }// DisplayBT
 //-------------Џа楤гал ЁбЇ®«м§гҐ¬лҐ ЇаЁ вҐбвЁа®ў ­ЁЁ-----------------------

 void TNull ( BinT b )
 //вҐбвЁагҐв NullBT ­  ўе®¤­®¬ ¤ҐаҐўҐ b
 {
  printf("BT=\n");
  DisplayBT( b, 1); printf("\n");
  printf("NullBT : „ҐаҐў® ");
  if ( !NullBT ( b ) ) printf(" ­Ґ ");
  printf("Їгбв®.\n");
  printf("BT=\n");
  DisplayBT( b, 1);
  getch();
 }//TNull

 void TRoot ( BinT b )
 //вҐбвЁагҐв RootBT ­  ўе®¤­®¬ ¤ҐаҐўҐ b
 {
  printf("BT=\n");
  DisplayBT( b, 1 );
  printf("\n");
  printf("RootBT : %c",RootBT( b ));printf("\n");
  printf("BT=\n");
  DisplayBT( b, 1 ); printf("\n");
  getch();
 }//TRoot

 void TLeft(  BinT b)
 //вҐбвЁагҐв LeftBT ­  ўе®¤­®¬ ¤ҐаҐўҐ b
 {
  printf("BT=\n");
  DisplayBT( b, 1 ); printf("\n");
  printf("LeftBT :");
  DisplayBT( LeftBT( b ), 1);printf("\n");
  printf("BT=\n");
  DisplayBT( b, 1 ); printf("\n");
  getch();
 }//TLeft

 void TRight(  BinT b)
 //вҐбвЁагҐв RightBT ­  ўе®¤­®¬ ¤ҐаҐўҐ b
 {
  printf("BT=\n");
  DisplayBT( b, 1 ); printf("\n");
  printf("RightBT :");
  DisplayBT( RightBT( b ), 1); printf("\n");
  printf("BT=\n");
  DisplayBT( b, 1 ); printf("\n");
  getch();
 }//TRight

 void TCons(  BinT b)
 //вҐбвЁагҐв ConsBT ­  ўе®¤­®¬ ¤ҐаҐўҐ b (b - ­Ґ Їгбв®)
 {
  printf("BT=\n");
  DisplayBT( b, 1); printf("\n");
  printf("ConsBT (RootBT(b), LeftBT(b) ,RightBT(b) ) :\n");
  DisplayBT( ConsBT( RootBT( b ), LeftBT( b ), RightBT( b ) ), 1 );
  printf("\nBT=\n");
  DisplayBT( b, 1 ); printf("\n");
  getch();
 }//TCons

 void TSetLeft( char e, BinT &b)
 //вҐбвЁагҐв SetLeft ­  ўе®¤­®¬ ¤ҐаҐўҐ b
 {
  printf("BT=\n");
  DisplayBT( b, 1); printf("\n");
  printf("SetLeft :");
  SetLeft( e, b );
  printf("\n");
  printf("BT=\n");
  DisplayBT( b, 1); printf("\n");
  BinT Temp=LeftBT(b); b=ConsBT(RootBT( b ), 0, RightBT(b)); DestroyBT(Temp);
  getch();
 }//TSetLeft

 void TSetRight( char e, BinT &b )
 //вҐбвЁагҐв SetRight ­  ўе®¤­®¬ ¤ҐаҐўҐ b
 {
  printf("BT=\n");
  DisplayBT( b, 1 ); printf("\n");
  printf("SetRight :");
  SetRight( e, b );
  printf("\n");
  printf("BT=\n");
  DisplayBT( b, 1 ); printf("\n");
  BinT Temp=RightBT(b); b=ConsBT(RootBT( b ),LeftBT(b), 0 );
  DestroyBT(Temp);
  getch();
 }//TSetRight

 void main()
 {
  fin=fopen("intestbt.txt", "r");
  BinT b,Temp;
  char e;
 /* b=EnterBT();
  DisplayBT ( b, 1 );
  fclose ( fin );
  OutBT( b ); printf("\n");
  DestroyBT( b );
  getch();*/
 clrscr();
 //-----------------------NullBT---------------------------------------------}
 printf( "NullBT\n" );
 printf("                    ’Ґбв1                 \n");
 b=CreateBT();
  TNull( b );
 printf("                    ’Ґбв2                 \n");
 b=MakeRoot('a');
  TNull( b );
 printf("                    ’Ґбв3                 \n");
 SetLeft('b',b);
  TNull( b );
 printf("                    ’Ґбв4                 \n");
 Temp=LeftBT(b); b=ConsBT(RootBT( b ),0,MakeRoot('c')); DestroyBT(Temp);
 TNull( b );
 SetLeft('b',b);
 printf("                    ’Ґбв5                 \n");
  TNull( b );
//---------------------------RootBT-----------------------------------------
 clrscr();
 printf( "RootBT\n" );
 printf("                    ’Ґбв1                 \n");
 printf("BT=\n");
 b=CreateBT();
  DisplayBT( b, 1 );
  printf("\n");
  printf("RootBT :\n");
  RootBT( b );
  printf("\nBT=\n");
  DisplayBT( b, 1 ); printf("\n");
  getch();
 printf("                    ’Ґбв2                 \n");
 b=MakeRoot('a');
  TRoot( b );
 printf("                    ’Ґбв3                 \n");
 SetLeft('b',b);
  TRoot( b );
 printf("                    ’Ґбв4                 \n");
 Temp=LeftBT(b); b=ConsBT(RootBT( b ),0,MakeRoot('c')); DestroyBT(Temp);
  TRoot( b );
 SetLeft('b',b);
  printf("                   ’Ґбв5                 \n");
  TRoot( b );
//----------------------------LeftBT-----------------------------------------}
 clrscr();
 printf( "LeftBT\n" );
 printf("                    ’Ґбв1                 \n");
 b=CreateBT();
  TLeft( b );
 printf("                    ’Ґбв2                 \n");
 b=MakeRoot('a');
  TLeft( b );
 printf("                    ’Ґбв3                 \n");
 SetLeft('b',b);
  TLeft( b );
 printf("                    ’Ґбв4                 \n");
 Temp=LeftBT(b); b=ConsBT(RootBT( b ),0,MakeRoot('c')); DestroyBT(Temp);
  TLeft( b );
 printf("                    ’Ґбв5                 \n");
 SetLeft('b',b);
  TLeft( b );
//----------------------------RightBT----------------------------------------}
 clrscr();
 printf("RightBT\n");
 printf("                    ’Ґбв1                 \n");
 b=CreateBT();
  TRight( b );
 printf("                    ’Ґбв2                 \n");
 b=MakeRoot('a');
  TRight( b );
 printf("                    ’Ґбв3                 \n");
 SetLeft('b',b);
  TRight( b );
 printf("                    ’Ґбв4                 \n");
 Temp=LeftBT(b); b=ConsBT(RootBT( b ),0 ,MakeRoot('c')); DestroyBT(Temp);
  TRight( b );
  printf("                    ’Ґбв5                 \n");
 SetLeft('b',b);
  TRight( b );
//----------------------------ConsBT-----------------------------------------}
 clrscr();
 printf("ConsBT\n");
 printf("                    ’Ґбв1                 \n");
 b=MakeRoot('a');
  TCons( b );
 printf("                    ’Ґбв2                 \n");
 SetLeft('b',b);
  TCons( b );
 printf("                    ’Ґбв3                 \n");
 Temp=LeftBT(b); b=ConsBT(RootBT( b ),0 ,MakeRoot('c')); DestroyBT(Temp);
  TCons( b );
 printf("                    ’Ґбв4                 \n");
 SetLeft('b',b);
  TCons( b );
//---------------------------SetLeft----------------------------------------}
 clrscr();
 printf("SetLeft\n");
 printf("‚ўҐ¤ЁвҐ н«Ґ¬Ґ­в вЁЇ  Char:"); cscanf("%c",&e);
 printf("\n                    ’Ґбв1                 \n");
 b=CreateBT();
 printf("BT=");
  DisplayBT( b, 1); printf("\n");
  printf("SetLeft :");
  SetLeft( e, b );
  printf("\n");
  printf("BT=\n");
  DisplayBT( b, 1); printf("\n");
  getch();
 printf("                    ’Ґбв2                 \n");
 b=MakeRoot('a');
  TSetLeft( e, b );
 printf("                    ’Ґбв3                 \n");
 SetLeft('b',b);
  TSetLeft( e, b );
 printf("                    ’Ґбв4                 \n");
 Temp=LeftBT(b); b=ConsBT(RootBT( b ),0 ,MakeRoot('c')); DestroyBT(Temp);
  TSetLeft( e, b );
 printf("                    ’Ґбв5                 \n");
 SetLeft('b',b);
  TSetLeft( e, b );
 //---------------------------SetRight---------------------------------------}
 clrscr();
 printf("SetRight\n");
 printf("‚ўҐ¤ЁвҐ н«Ґ¬Ґ­в вЁЇ  Char:"); cscanf("%c",&e);
 printf("\n                    ’Ґбв1                 \n");
 b=CreateBT();
  printf("BT=");
  DisplayBT( b, 1); printf("\n");
  printf("SetRight :");
  SetRight( e, b );
  printf("\n");
  printf("BT=\n");
  DisplayBT( b, 1); printf("\n");
  getch();
 printf("                    ’Ґбв2                 \n");
 b=MakeRoot('a');
  TSetRight( e, b );
 printf("                    ’Ґбв3                 \n");
 SetLeft('b',b);
  TSetRight( e, b );
 printf("                    ’Ґбв4                 \n");
 Temp=LeftBT(b); b=ConsBT(RootBT( b ),0,MakeRoot('c')); DestroyBT(Temp);
  TSetRight( e, b );
 printf("                    ’Ґбв5                 \n");
 SetLeft('b',b);
  TSetRight( e, b );
 }
Соседние файлы в папке Бинарные деревья1