Я пытаюсь дублировать данные 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;
}
Задача ещё не решена.
Других решений пока нет …