0

我创建了一个二叉搜索树,我的二叉树的每个节点都设置在一个包含键的结构中,以及一个指向左右节点的指针。

在我的这个二叉搜索树的复制构造函数中,我调用了一个辅助方法来递归遍历看起来像这样的树:

Node* BinaryTree::copyHelper(const Node* other)
{
if(other == NULL)
{
    return NULL; // If there's no Node to copy, return NULL.
}

Node* newNode  = new Node; 

if(newNode)
{
    newNode->name  = other->name;
    newNode->left  = copyHelper(other->left); 
    newNode->right = copyHelper(other->right);
}

return newNode; 
}

我在标题中提到的错误是在上面最后一个 if 语句中的左右指针上。

如果有人能告诉我如何删除它,那将不胜感激。

4

1 回答 1

0

如果您使用智能指针而不是原始指针,您可能可以绕过警告:

typedef std::unique_ptr<Node> NodePtr; 
NodePtr newNode(new Node);

代替

Node* newNode = newNode;
于 2012-05-02T14:07:32.037 回答