Всем привет. Подскажите пж как можно заполнить дерево рандомно, а не с клавиатуры:
| Код | #include<iostream> using namespace std; struct node { int Key; int Count; node *Left; node *Right; }; class TREE { private: node *Tree;//Указатель на корень дерева. void Search (int, node**); public: TREE() { Tree = NULL;} node** GetTree() {return &Tree;} void BuildTree ();//Построение бинарного дерева. //Вывод дерева на экран (рекурсивный алгоритм). void Vyvod (node**,int); }; int main () { setlocale(LC_ALL,"Russian"); TREE A; A.BuildTree (); A.Vyvod (A.GetTree(),0); getch(); } void TREE::BuildTree () //Построение бинарного дерева. //Tree - указатель на вершину дерева. { int el; cout<<"Вводите ключи вершин дерева: \n"; cin>>el; while (el!=0) { Search (el,&Tree);cin>>el; } } void TREE::Vyvod (node **w,int l) //Изображение дерева w на экране дисплея // (рекурсивный алгоритм). //*w - указатель на корень дерева. { int i; if (*w!=NULL) { Vyvod (&((**w).Right),l+1); for (i=1; i<=l; i++) cout<<" "; cout<<(**w).Key<<endl; Vyvod (&((**w).Left),l+1); } } void TREE::Search (int x,node **p) //Поиск звена x в бинарном дереве со вставкой // (рекурсивный алгоритм). //*p - указатель на вершину дерева. { if (*p==NULL) { // Вершины в дереве нет; включить ее. *p = new(node); (**p).Key = x; (**p).Count = 1; (**p).Left = (**p).Right = NULL; } else if (x<(**p).Key) Search (x,&((**p).Left)); else if (x>(**p).Key) Search (x,&((**p).Right)); else (**p).Count += 1; }
|
|