gpt4 book ai didi

c - 二叉树插入和删除 - C

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

我已经通过教程完成了插入节点和删除树。我测试了它,它工作正常。但是我不明白为什么我需要在插入中通过引用传递根,而在 deleteAll 中只传递指针。因为我认为只将指针传递给它的值引用,然后每个更改都只能在函数中看到。

typedef struct node{
int element;
struct node *left;
struct node *right;
}*tTree;

void insert(tTree *myTree, int element){
if(*myTree == NULL){
myTree= (tTree)malloc(sizeof(*myTree));
myTree->element = element;
myTree->left = NULL;
myTree->right = NULL;
}
else{
int treeElement = (*myTree)->element;
if( treeElement > element){
insert(&(*myTree)->left, element);
}
else{
insert(&(*myTree)->right, element);
}
}
}



void deleteAll(tTree myTree){
if(myTree != NULL){
deleteAll(myTree->right);
deleteAll(myTree->left);
free(myTree);
}
}

int size(tTree myTree){
if (myTree != NULL){
return 1 + size(myTree->right) + size(myTree->left);
}
else
return 0;
}

int main(){

tTree root = NULL;
insert(&root,3);
insert(&root,2);
insert(&root,4);
insert(&root,1);
printf("Number of nodes: %d\n",size(root));
deleteAll(root);
root = NULL;
printf("Number of nodes: %d\n",size(root));
return 1;
}

最佳答案

删除只需要它执行的语句的指针。它不会将任何信息传递回调用函数。但是,如果需要,您的插入函数会分配,并且在这种情况下必须将分配的指针返回给调用者。

关于c - 二叉树插入和删除 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661797/

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