【发布时间】:2013-12-16 15:31:36
【问题描述】:
在我的 BST 类中,我使用以下函数来交换两个节点
void swapNodes(BSTNode *node1, BSTNode *node2)
{
if(node1->parent->left==node1)
node1->parent->left = node2;
else
node1->parent->right = node2;
if(node2->parent->left==node2)
node2->parent->left = node1;
else
node2->parent->right = node1;
BSTNode *temp;
temp->parent = node1->parent;
temp->left = node1->left;
temp->right = node1->right;
node1->parent = node2->parent;
node1->left = node2->left;
node1->right = node2->right;
node2->parent = temp->parent;
node2->left = temp->left;
node2->right = temp->right;
}
它需要两个节点指针并交换它们。但是当我调用这个函数时,它会出现内存违规错误。我在这里做错了什么?如果您知道任何其他简单的方法来交换二叉树中的两个节点,请分享。
【问题讨论】:
标签: c binary-search-tree swap