Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СиАОД1

.CPP
Скачиваний:
4
Добавлен:
01.05.2014
Размер:
1.27 Кб
Скачать
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

struct Nd { int d;	//‘вагЄвга  ¤«п еа ­Ґ­Ёп 㧫  ¤ҐаҐў 
		 Nd * lft;
		 Nd * rgt;
	  } ;
int num=0, tall = 0, offset=40;

Nd * MakeTree(int level) //=== ‘®§¤ ­ЁҐ ¤ҐаҐў  ў Ї ¬пвЁ ===

{ Nd * v;
  int Y = level < random(7);
  if (Y) {
	 v = new Nd;
	 //v->d = ++num;	¤«п Їаאַ© ­г¬Ґа жЁЁ
	 v->lft = MakeTree(level+1);
	 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));
	 if( r > tall)
		tall = r;

}

void Analyse(Nd *v)
{
	printf("%c", v->d+'a');
	if( v->lft)
		 Analyse(v->lft);

	if (v->rgt)
		 Analyse(v->rgt);
}

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

  do
  {
	  root = MakeTree(0);
  }
  while( !root );
  clrscr();
  OutTree(root, 1, 40);
  gotoxy(20,18);
  printf("\n\tЏ®а冷Є ®Ўе®¤  ўҐаиЁ­: ");
  Analyse(root);
  printf( "\n\tBisota tree is: %d", tall );
  gotoxy(20,23);
  puts("=== The End ===");
  getch();
}