Pеализация бинарного дерева
Pеализация бинарного дерева на C++
Pабочий вариант (ctrl+c ; ctrl+v , для студентов!)
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
////Sozdanie strukturi dannix
struct Node
{
int data; int ur;
Node *left, *right;
};
////// Funkcija Sozdanie Uzla()
Node *CreateNode()
{
Node *newNode;
newNode=new Node;
cout<<”\nVvedite cheslo katorae dobavit: “;
cin>>newNode->data;
newNode->left=NULL;
newNode->right=NULL;
return newNode;
}
///// Funkcija Prosmotra Dereva ()
void PrintTree (Node *cur)
{
if ( ! cur ) return;
PrintTree (cur->left);
cout<<cur->data<<’\n’;
PrintTree (cur->right);
}
/// Funkcija Poiska Uzla()
Node *FindNode (Node *cur, int x)
{
Node *cur1;
if (!cur) return NULL;
cout << “\n Prosmotr Elementa S Dannimi : ” << cur->data << “\n”;
if (cur->data==x) return cur;
else {
if (cur->left==NULL && cur->right==NULL) return 0;
if (cur->left!=NULL)
{
cout << “\nPravaja Storona”;
cur1=FindNode(cur->left,x);
if(cur1!=NULL) return cur1;
}
if (cur->right!=NULL)
{
cout << “\nLevaja Storona”;
cur1=FindNode(cur->right,x);
if(cur1!=NULL) return cur1;
}
if(cur1==NULL) return 0;
}
};
/// Funkcija uzdalenia Uzla()
Node *dzesana(Node *cur)
{
Node *cus;
if (cur->left==NULL && cur->right==NULL) return cur;
else
{
if (cur->left!=0) {
cus=dzesana(cur->left);
delete cus;
cur->left=0;
}
if (cur->right!=0) {
cus=dzesana(cur->right);
delete cus;
cur->right=0;
}
if (cur->left==NULL && cur->right==NULL) return cur;
}
};
/// Main()
int main(int argc, char *argv[])
{
Node *root=0, *newNode, *cur, *sak=0;
int izv,x;
do
{
cout<<”\n1. Sozdanija Uzla\n”;
cout<<”2. Poisk Uzla\n”;
cout<<”3. Mezgla meklesana\n”;
cout<<”4. Kakomu uzlu Dobavit levova rebenka?\n”;
cout<<”5. Kakomu uzlu Dobavit pravavo rebenka?\n”;
cout<<”6. Udalenija Lista\n”;
cout<<”0. Exit\n”;
cin>>izv;
switch(izv)
{
case 1: {
if (!root)
{
cout<<”\nRoot “;
root=CreateNode();
}
else cout<<”\nRoot uzhe sushestvuet!!!\n”;
break;
}
case 2: {
cout<<”\nDereva : \n”;
PrintTree(root);
cout<<”\n”;
break;
}
case 3: {
if (root)
{
cout<<”\nShto ishem “;
cin>>x;
cur=FindNode(root,x);
if (cur==NULL) cout<<”\nNet takova Elementa “<< “\n”;
else cout<<”Est takoj Element “<<cur->data << “\n”;
}
else cout<<”\nBinarnoe Derevo Pustoe!!!\n”;
break;
}
case 4: {
cout<<”Kakomu uzlu Dobavit levova rebenka? “;
cin>>x;
cur=FindNode(root,x);
if (cur==NULL) cout<<”\nNenashol!”;
else
{
if(cur->left!=NULL) cout<<”U dannova uzla est Levij rebenak!” ;
else newNode=CreateNode(); cur->left=newNode;
}
break;
}
case 5: {
cout<<”Kakomu uzlu Dobavit pravova rebenka? “;
cin>>x;
cur=FindNode(root,x);
if (cur==NULL) cout<<”Nenashol!”;
else
{
if(cur->right!=NULL) cout<<”U dannova uzla est Pravij rebenak!”;
else newNode=CreateNode(); cur->right=newNode;
}
break;
}
case 6: {
cout<<”\nKakomu uzlu udalit List? “;
cin >> x;
cur=FindNode(root,x);
sak=dzesana(cur);
cout << “\nUdalit Listja\n”;
break;
}
case 0: {
cout << “\nExit\n”;
break;
}
}
}
while(izv!=0);
system(”PAUSE>>null”);
return 0;
}











