gpt4 book ai didi

C - 空二叉搜索树,然后插入

转载 作者:行者123 更新时间:2023-11-30 17:35:51 24 4
gpt4 key购买 nike

未正确清除二叉树并在根所在位置生成地址和空 0.0。当它插入所有内容时,它会插入它和剩余的空指向(未清除的节点)。

如何正确清除二叉树?

代码如下。

void empty(Node * node) {
Node * left = node->left;
Node * right = node->right;
free(node);
if (left)
empty(left);
if (right)
empty(right);
}

Node * insert(Node * node, int value){
if(node == NULL){
node = (Node *)malloc(sizeof(Node));
node->value = value;
node->left = NULL;
node->right = NULL;
return node;
}
if(value > node->value){
node->right = insert(node->right,value);
}
else if(value < node->value){
node->left = insert(node->left,value);
}
else {
return;
}
return node;
}

void inorder(Node * node){
if(node == NULL) {
return;
}
inorder(node->left);
printf("%.1f ", (float) node->value);
inorder(node->right);
}

int main() {
Node * root = NULL;

root = insert(root, 5);
root = insert(root, -1);
root = insert(root, 3);
root = insert(root, -14);
root = insert(root, 8);
root = insert(root, 10);

empty(root);
insert(root, 6);
inorder(root);
}
}

最佳答案

一切看起来都很好,除了

 empty(root);
insert(root, 6);

empty(root);之后root不是NULL,只是一些垃圾,所以你需要再次重新分配它(root = NULL;) 在调用 insert 函数之前。对insert的调用也有问题,按照之前的root = insert(root, 6);

同时执行 Deduplicator 在 empty 函数中建议的操作。如果rootNULLempty会崩溃,所以在取左右指针之前检查节点是否不为NULL

关于C - 空二叉搜索树,然后插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22871411/

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