Скачиваний:
10
Добавлен:
01.05.2014
Размер:
2.11 Кб
Скачать
//===== „Ґ¬®­бва жЁ®­­ п Їа®Ја ¬¬ : ЋЃ•Ћ„› ¤ҐаҐў  =====
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

struct Nd { int d;	//‘вагЄвга  ¤«п еа ­Ґ­Ёп 㧫  ¤ҐаҐў 
	    Nd * lft;
	    Nd * rgt;
	  } ;
int num=0,		//ѓ«®Ў «м­л© бзсвзЁЄ ¤«п ўҐаиЁ­
    offset=40;		//Ќ з «м­®Ґ ᬥ饭ЁҐ ¤«п ўл¤ зЁ ­  нЄа ­

Nd * MakeTree(int level) //=== ‘®§¤ ­ЁҐ ¤ҐаҐў  ў Ї ¬пвЁ ===
//„«п ®Ўе®¤  ¤ҐаҐў : гЎа вм ўлзЁб«Ґ­ЁҐ Ё Їа®ўҐаЄг Y;
//	   	     ­г¬Ґа жЁо § ¬Ґ­Ёвм ўлў®¤®¬ ­®¬Ґа  ­  нЄа ­.
{ Nd * v;
  int Y = level < random(7);
//  printf("Node %d/%d (1/0):", num, level); scanf("%d", &Y);
  if (Y) {	//ўҐаиЁ­  ᮧ¤ свбп, Ґб«Ё Y=1
	 v = new Nd;
	 v->d = ++num;	//ЏђџЊЂџ ­г¬Ґа жЁп (в® ¦Ґ: "ў Ј«гЎЁ­г"
	 v->lft = MakeTree(level+1);
//	 v->d = ++num;          //‚ аЁ ­в: ў­гв७­пп ­г¬Ґа жЁп
	 v->rgt = MakeTree(level+1);
//	 v->d = ++num;		//‚ аЁ ­в: ®Ўа в­ п ­г¬Ґа жЁп
  }
  else v = NULL;
  return v;
}

void OutTree(Nd * v, int r, int c) //=== ЋЎе®¤ ¤ҐаҐў : ‚л¤ з  ­  нЄа ­ ===
{ gotoxy(c, r);  printf("%c", v->d+'a'); //‚л¤ з  ўҐаиЁ­л ў в®зЄг (c,r)
  if (v->lft) OutTree(v->lft, r+1, c-(offset>>r)); //ЋЎе®¤ «Ґў®Ј® Ї®¤¤ҐаҐў 
  if (v->rgt) OutTree(v->rgt, r+1, c+(offset>>r)); //’® ¦Ґ, Їа ў®Ј®
}

void BFS (Nd * v) //=== ЋЎе®¤ ¤ҐаҐў  "ў иЁаЁ­г" ===
{ const int MaxQ=10; //ђ §¬Ґа Ї ¬пвЁ ¤«п ®зҐаҐ¤Ё
  Nd * QUEUE[MaxQ];  //Џ ¬пвм ¤«п ®зҐаҐ¤Ё
  int out=0, in=0;   //Ќ®¬Ґа  ЇҐаў®Ј® Ё Ї®б«Ґ¤­ҐЈ® ў ®зҐаҐ¤Ё

  QUEUE[in++] = v; in%=MaxQ; // QUEUE <- v
  while (in != out) //Џ®Є  ®зҐаҐ¤м ­Ґ Їгбв ...
  { v = QUEUE[out++]; out %= MaxQ;       // v <- QUEUE
    printf(" %c", v->d+'a'
    ); 		 // "ЋЎа Ў®вЄ " ўҐаиЁ­л v
    if (v->lft)
	{QUEUE[in++] = v->lft; in%=MaxQ;} // QUEUE <- («Ґўл© бл­)
    if (v->rgt)
	{QUEUE[in++] = v->rgt; in%=MaxQ;} // QUEUE <- (Їа ўл© бл­)
  }
}


void main()
{ Nd * root;
  randomize();

  root = MakeTree(0);
  clrscr();
  if(root) {
    OutTree(root, 1, 40);

    gotoxy(20,18); printf("ЋЎе®¤ ў иЁаЁ­г:"); BFS(root);
  }
  else printf("„ҐаҐў® Їгбв®!");

  gotoxy(20,20);
  puts("=== The End ==="); getch();
}
Соседние файлы в папке Демонстрационные примеры к курсовой по СиАОД