簡體   English   中英

在 C 中創建包含其他結構的二叉樹的深層副本

[英]Creating a deep copy of a binary tree containing other structures in C

我有這個 function 應該創建整個二叉樹的深層副本。

symbol_t* cloneTable(symbol_t *node) {

    if (node == NULL)
        return node;

    symbol_t *newSymbol = malloc(sizeof(symbol_t));
    newSymbol->type = node->type;
    newSymbol->key = node->key;

    if (node->value != NULL) {
        value_t *newValue = malloc(sizeof(value_t));
        newValue = node->value;
        newSymbol->value = newValue;
    }

    newSymbol->leftChild = cloneTable(node->leftChild);
    newSymbol->rightChild = cloneTable(node->rightChild);

    return newSymbol;
}

但是,當我更改原始表中的value時,復制表中的值也會更改。

我可以做些什么來創建它的深層副本?

預先感謝您的任何幫助。

在:

    value_t *newValue = malloc(sizeof(value_t));

您為 object 分配 memory。 看起來, node包含一個指向值 object 的指針。

    newValue = node->value;

你復制指針。 要復制該值,請使用:

    *newValue = *node->value;

現在您可以將 object 放在新節點中:

    newSymbol->value = newValue;

注意:不要忘記設置newSymbol->value= NULL; node->value==NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM