C二进制搜索树打印值
我有一个程序,它从用户那里得到6个数字,并创建二叉搜索树。它工作正常,但当我尝试打印它时,它会打印一个随机数 二十五 37 48 66 70 82 11098240这是打印的值,我不知道是打印功能还是插入功能有问题。有什么帮助吗C二进制搜索树打印值,c,binary-tree,C,Binary Tree,我有一个程序,它从用户那里得到6个数字,并创建二叉搜索树。它工作正常,但当我尝试打印它时,它会打印一个随机数 二十五 37 48 66 70 82 11098240这是打印的值,我不知道是打印功能还是插入功能有问题。有什么帮助吗 #include <stdio.h> #include <stdlib.h> struct Node { int val; struct Node* left; str
#include <stdio.h>
#include <stdlib.h>
struct Node
{
int val;
struct Node* left;
struct Node* right;
};
typedef struct Node *Tree;
void DisplayTree(Tree t)
{
if(t == NULL)
return;
DisplayTree(t->left);
printf("%d\n", t->val);
DisplayTree(t->right);
}
Tree InsertElement(int val, Tree t)
{
if(t == NULL){
Tree root = (struct Node*)malloc(sizeof(struct Node));
root->left = NULL;
root->right = NULL;
root->val = val;
return root;
}
if(t->val < val)
{
t->right = InsertElement(val, t->right);
return t;
}
t->left = InsertElement(val, t->left);
return t;
}
Tree CreateTree()
{
int i;
int val;
Tree Temp = (struct Node*)malloc(sizeof(struct Node));
Temp->left = NULL;
Temp->right = NULL;
for(i=0;i<6;i++)
{
scanf("%d", &val);
InsertElement(val, Temp);
}
return Temp;
}
int main()
{
Tree myTree = CreateTree();
DisplayTree(myTree);
return 0;
}
#包括
#包括
结构体类型
{
int-val;
结构节点*左;
结构节点*右;
};
typedef结构节点*树;
无效显示树(树t)
{
如果(t==NULL)
返回;
显示树(t->左);
printf(“%d\n”,t->val);
显示树(t->右);
}
树插入元素(int-val,树t)
{
如果(t==NULL){
树根=(结构节点*)malloc(sizeof(结构节点));
根->左=空;
root->right=NULL;
根->val=val;
返回根;
}
如果(t->valright=插入元素(val,t->right);
返回t;
}
t->left=插入元素(val,t->left);
返回t;
}
树CreateTree()
{
int i;
int-val;
树Temp=(结构节点*)malloc(sizeof(结构节点));
Temp->left=NULL;
Temp->right=NULL;
对于(i=0;i您从未在顶层分配Tree->val,因此它有未初始化的垃圾
不要创建第一棵树。只需执行以下操作:
Tree
CreateTree()
{
int val;
Tree Temp = NULL;
while( scanf("%d", &val) == 1 ){
Temp = InsertElement(val, Temp);
}
return Temp;
}
你从来没有在顶层分配<代码>树-> Value/Cult>,所以它没有初始化的GabBo.Eng.至少有两个用户通过TyPulf被隐藏的指针弄糊涂了。这是一个广泛传播但不受欢迎的习惯。考虑到同事们把你的代码弄糊涂了,然后让他们阅读。下面是@ Yunnosch的评论。考虑<代码>树根。=(struct Node*)malloc(sizeof(struct Node));
孤立地说,无法判断该行是否正确。但是struct Node*root=malloc(n*sizeof*root);
明确地为n个对象分配了足够的空间。