#include #include using namespace std;... - вопрос №887652

#include
#include
using namespace std;

struct Node //узел дерева
{

Node *left;
int height;
char key[9];
int balance;
Node *right;
};

int main()
{
int a;


Node *root; //указатель на корень дерева
root = new Node;
root->left=NULL; //0 элементов в дереве
root->height=0;//высота дерева
root->balance=0; //дерево сбаланс.
//root->key=AAAAAA; //ключ узла
root->right = NULL; //дерево пустое

Node *T;
Node *S;
Node *P;
Node *Q;
Node *R;
char *k; //ключ, вводимый для поиска

int n=9; //количество букв в ключе

k=new char[9];
char *K;
K=new char[9];

int shag=1;
while (shag)
{

switch (shag)
{
case 1:
cout< T = P = S = root ;

case 2:
cout< cout<< «Give me your kluch»< for (int i=0; i {
cin>>k[i];
k[i]=K[i];
}

for (int i=0; i

if (K[i] < P->key[i])
shag=3;
if (K[i] > P->key[i])
shag=4;

if (K[i] == P->key[i])
{
cout< char variant;
if (variant=='y')
{ for (int i=0; i K[i]=0;}
shag=2;
}
else shag=0;
}
}



case 3:
cout << «It is move left»< Q=P->left;
///////////P->left=Q;

if (Q==NULL)
{
Q=new Node;
P->left=Q;
root->height++;
shag=5;
}
if(Q->balance !=0 )
{
P=T;
Q=S;
Q=P;
shag=2;
}
case 4:
cout << «It is move right»< ///////// P->right=Q;

Q=P->right;
if (Q==NULL)
{
Q=new Node;
Q=P->right;
root->height++;
shag=5;
}
if(Q->balance !=0 )
{
P=T;
Q=S;
Q=P;
shag=2;
}
case 5:
cout<< «It is insert a node»< for (int i=0; i Q->key[i]=K[i];}
Q->left=NULL;
Q->right=NULL;
Q->balance=0;
case 6:
cout<< «It is adjustment balance factor»< for (int i=0; i if (K[i] < S->key[i]) a=-1 ;
else a=1;}
do {
if (a==1)
{ S->right=R=P; }
if (a==-1)
{ S->left=R=P; }
} while (P!=Q);


for (int i=0; i if (K[i]key[i])
{
P->balance=-1;
P=P->left;
}
if (K[i]>P->key[i])
{
P->balance=1;
P=P->right;
}
if (K[i]==P->key[i]) P=Q;
shag=7;}

case 7:
cout << «It is balancing»< if (S->balance==0)
{
S->balance=a;
//root->left++;
root->height++;
shag=0;
}
if (S->balance == -a)
{
S->balance=0;
shag=0;
}
if (S->balance == a)
{
if (R->balance == a) shag=8;
if (R->balance == -a) shag=9;
}

case 8:
cout<< «It is single turn»< P=R;
if (a==1)
{
S->right=R->left;
R->left=S;
}
if (a==-1)
{
S->left=R->right;
R->right=S;
}
S->balance=R->balance=0;
shag=10;

case 9:
cout << «It is twice turn»< if (a==1)
{
P=R->left;
R->left=P->right;
P->right=R;
S->right=P->left;
P->left=S;
}
if (a==-1)
{
R->right=P;
R->right=P->left;
P->left=R;
S->left=P->right;
P->right=S;
}


if (P->balance==a)
{
S->balance=-a;
R->balance=0;
}
if (P->balance==0)
{
S->balance=0;
R->balance=0;
}
if (P->balance==-a)
{
S->balance=0;
R->balance=a;
}

P->balance=0;

case 10:
cout < if (T->right==S) T->right=P;
else T->left=P;
shag=0;
for (int i=0; i K[i]=0;}}
}

char end;
cin>> end;

return 0;
}

25.12.13
1 ответ

Ответы

и в чем вопрос?

27.12.13
Посмотреть всех экспертов из раздела Технологии > C/C++
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store