-1
在我的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;
}
它需要兩個節點指針和交換他們兩個。但是當我調用這個函數時會出現內存違規錯誤。我在這裏做錯了什麼?如果你知道任何其他簡單的方法來交換二叉樹中的兩個節點,請分享。