我有两个孩子时删除节点时遇到问题,我不知道该怎么办,因为我解决了没有孩子,左孩子和右孩子的问题
struct Node* deleteNode(Node *root, int val)
{
if(root == NULL) return root;
else if(val < root->data)
root->left = deleteNode(root->left,val);
else if(val > root->data)
root->right = deleteNode(root->right, val);
else
{
if(root->left == NULL && root->right == NULL)
{
free(root);
root = NULL;
}
else if(root->left == NULL)
{
Node *temp = root;
root = root->right;
free(temp);
}
else if(root->right == NULL)
{
Node *temp = root;
root = root->left;
free(temp);
}
}
最佳答案
如果我正确理解了您的问题,则必须使一个子节点成为另一个子节点的子节点。如果两个子节点的度数均小于1,则必须为该添加项执行另一个递归函数。
关于c - 在C BST中删除节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43856859/