Удаление узла в дереве C++
Дана программа, позволяющая: 1)создать N-узловое дерево, вводимое пользователем, 2) вывести это дерево. Как 3) удалить заданный узел дерева так, что этот удаляемый узел заменится самым левым дочерним узлом?
#include <iostream>
#include <stdlib.h>
using namespace std;
//using namespace system
struct Tree
{
int id; //индекс
int level; //уровень в иерархии
int count_son; //количество сыновей
struct Tree** son; //массив указателей на сыновей
int key; //ключ
};
struct Tree* createTree(struct Tree* node, int id, int level)
{
node->id = id;
node->level = level;
cout << "\nВведите степень узла + его ключ. Текущая позиция: " << node->level << "-" << node->id << "\n";
cin >> node->count_son >> node->key;
node->son = new struct Tree* [node->count_son];
level++;
for (int i = 0; i < node->count_son; i++)
{
node->son[i] = new Tree;
node->son[i]->id = id + i;
node->son[i]->level = level;
}
for (int i = 0; i < node->count_son; i++)
createTree(node->son[i], id + i, level);
return node;
}
void printTree(struct Tree* node)
{
if (node)
{
for (int i = 0; i < node->level; i++) cout << "| ";
if (node->son != NULL) cout << "[+]";
cout << "(" << node->level << "-" << node->id << ") = "<< node->key << endl;
if (node->count_son != 0)
for (int i = 0; i < node->count_son; i++)
printTree(node->son[i]);
}
}
void nodeKill(struct Tree* node)
{
if (node)
{ }
}
int main()
{
size_t number; int level, index;
setlocale(LC_ALL, "RUS");
Tree* root;
root = new Tree;
root = createTree(root, 0, 0);
cout << "\n-----Итоговое дерево-----\n";
printTree(root);
cout << "Введите узел (X-Y), который хотите удалить: ";
cin >> level >> index;
system("pause");
return 0;
}