gpt4 book ai didi

c - 使用双指针从 RST 树中删除节点

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:08 24 4
gpt4 key购买 nike

我有一个 RST 树,它的结构是:

struct node
{
int key;
node *left, *right;
} *root;

我的功能是删除带有“v”键的节点:

void Delete (int v)
{
node** p = Search(v);
node** tmp = p;
if (!(*p)) return;
if((*p)->left==null && (*p)->right==NULL)
{
p = null;
return;
}
while((*tmp)->left != null || (*tmp)->right != NULL)
{
if ((*tmp)->left != NULL)
tmp = &((*tmp)->left);
else
tmp = &((*tmp)->right);
}
(*tmp)->right = (*p)->right;
(*tmp)->left = (*p)->left;
p = tmp;
tmp = null;
}

通常我不确定什么时候应该写'tmp'和'*tmp'。你能在这里解释我的错误吗?

最佳答案

(!tmp)->right == NULL

node** temp = p;

temp->right, temp alone is a pointer to a node pointer. It has no right.
(*temp)->right.

关于c - 使用双指针从 RST 树中删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com