c-删除main中的int后,BST代码停止工作



所以,我试图写一个只插入的二进制树代码,它可以工作,但在我删除了一些无用的int后,由于某种原因它停止了工作。有人能告诉我为什么吗

这是我的代码,它运行正常。但当我删除int main中的int i=3;时,它就停止工作了。为什么?Btwint i=3;只是一个随机数,如果我把它改成其他数字,它仍然有效

#include<stdio.h> 
#include<stdlib.h> 
struct Treenode{ 
int data; 
struct node*left; 
struct node*right; 
}; 
typedef struct Treenode Treenode;

struct Treenode* CreateTree(struct Treenode** tree, int num) { 

Treenode*temp = NULL;
if(!(*tree))
{
temp = (Treenode*)malloc(sizeof(Treenode));
temp->left = temp->right = NULL;
temp->data = num;
*tree = temp;
return;
}
if(num < (*tree)->data){
CreateTree(&(*tree)->left, num);
}
else if(num > (*tree)->data){
CreateTree(&(*tree)->right, num);
}

}
void inorder(struct Treenode* root)
{
if (root != NULL) {
inorder(root->left);
printf("%d n", root->data);
inorder(root->right);
}
}
int main(){
int i = 3;
//creating tree
Treenode*root;


CreateTree(&root, 1);
CreateTree(&root, 2);
CreateTree(&root, 3);
CreateTree(&root, 4);
CreateTree(&root, 5);
CreateTree(&root, 6);
inorder(root);

return 0;
}

非静态局部变量Treenode *root;未初始化,因此其初始值不确定。使用这种不确定的值可能会引起一些麻烦。

初始化像Treenode *root = NULL;这样的变量以解决问题。

还要注意的是,malloc()家族的铸造结果被认为是一种不好的做法。

最新更新