gpt4 book ai didi

c - 移除叶子不影响 BST - C

转载 作者:太空狗 更新时间:2023-10-29 15:39:12 25 4
gpt4 key购买 nike

我编写了一个函数来使 BST 的所有叶子无效。 BST当然有一个左右指针和一个叫做data的char来存储节点的值。

void removeLeaves(struct Tree* T){
if(T->left == NULL && T->right == NULL){
printf("removing %c\n", T->data);
T=NULL;
}
else{
if(T->left!=NULL){
removeLeaves(T->left);
}
if(T->right!=NULL){
removeLeaves(T->right);
}
}
}

I 在调用此函数之前和之后打印树。尽管上面的打印语句有效并打印了无效的节点,但生成的树是相同的。我有类似的东西:

print(BST);
removeLeaves(BST);
print(BST);

知道发生了什么事吗?谢谢。

最佳答案

T=NULL; 将 null 分配给本地指针,而不是树中的任何内容。您需要使用 struct Tree ** 以便您可以修改 struct Tree *:

void removeLeaves(struct Tree ** T){
if((*T)->left == NULL && (*T)->right == NULL){
printf("removing %c\n", (*T)->data);
*T = NULL;
}
else{
if((*T)->left!=NULL){
pruneTree((*T)->left);
}
if((*T)->right!=NULL){
pruneTree((*T)->right);
}
}
}

关于c - 移除叶子不影响 BST - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10844741/

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