двоичное дерево поиска — дублировать каждый элемент

Я пытаюсь дублировать данные BST

скажем, я получаю это:

   2
/ \
1   3

что я пытаюсь сделать, это:

      2
/ \
2   3
/   /
1   3
/
1
void bTree::mulTree(tNode *tree)
{
if (!tree)
return;
if (tree->left)
tree->left->left = insert(tree->left->value);
else
tree->left = insert(tree->value);

mulTree(tree->left->left);

if (tree->value != tree->left->value)
{
tree->left->value = tree->value;
mulTree(tree->right);
}
}

с этим кодом я получаю левую сторону, как это должно быть
но если я пытаюсь внести изменения на правой стороне, я получаю кучу ошибок

"//mulTree(tree->right);"

если я запускаю это, я получаю:
"HEAP: Free Heap block ... after it was freed"
но я не понимаю, где он был уже освобожден … = \

я получаю ошибку во время этого:

tree->left = insert(tree->value);

Код вставки:

tNode* bTree::insert(int value)
{
tNode *temp = new tNode();
temp->value = value;
return temp;
}

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]