[英]BST code stops working after deleting the int in main
所以,我試圖編寫一個只插入的二叉樹代碼,它正在工作,但是在我刪除一些無用的int
之后,它由於某種原因停止工作。 誰能告訴我為什么
所以,這是我的代碼,它工作正常。 但是當我刪除int i=3;
在int main
它停止工作。 這是為什么? 順便說一句int 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()
系列的強制轉換結果被認為是一種不好的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.