2

指定された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;
}
4

0 に答える 0