void Add(Node*& top, char* Key, char* AddKey)
{
if (top == NULL)
{
top = new Node;
top->name = Key;
top->brother = NULL;
top->son = NULL;
return;
}
else
{
if (top->name == AddKey && top->son == NULL) // добавить сына, если нет сыновей у корня
{
Add(top->son, Key, AddKey);
return;
}
if (top->name == AddKey && top->son != NULL)
{
if (top->son->brother == NULL) // добавить брата сыну, если есть такой
{
Add(top->son->brother, Key, AddKey);
return;
}
if (top->son->brother != NULL && top->son->brother->brother == NULL) // добавить брата, если есть уже 1 брат
{
Add(top->son->brother->brother, Key, AddKey);
return;
}
if (top->son->brother != NULL && top->son->brother->brother != NULL) // добавить брата, если уже есть 2 брата
{
Add(top->son->brother->brother->brother, Key, AddKey);
return;
}
}
if (top->name != AddKey && top->son != NULL)
{
Add(top->son->son, Key, AddKey);
}
}
}