[英]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.