Код: Выделить всё
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <clocale>
using namespace std;
struct node
{
int d;//элементы дерева
node *l, *r;//Левая и Правая часть дерева
};
//создание поддерева
void MakeSubTrees(node *leaf)
{
node *Top;int key;
cout<<"введите текущий узел"<<endl;
cin>>leaf->d;
cout<<leaf->d<<" имеет левое поддерево?"<<endl;
cin>>key;
if (key==1)
{
(Top)=new node;
leaf->l=Top;
MakeSubTrees(Top);
}
else
leaf->l=NULL;
cout<<leaf->d<<" имеет правое поддерево?"<<endl;
cin>>key;
if (key==1)
{
(Top)=new node;
leaf->r=Top;
MakeSubTrees(Top);
}
else
leaf->r=NULL;
}
//создание дерева
void MakeTree(node **Top)
{
(*Top)=new node;
MakeSubTrees(*Top);
}
void ViewTree(node *Top,int level)
{
if (Top){
ViewTree(Top->l,level+1);
for (int i=0;i<level;i++)
cout<<" ";
cout<<Top->d<<endl;
ViewTree(Top->r,level+1);
}
}
void main()
{
setlocale(LC_CTYPE, "Russian");
node *Top;
MakeTree(&Top);
ViewTree(Top,0);
getch();
return;
}