gpt4 book ai didi

c - 即使我插入了值,为什么它说树为空?

转载 作者:行者123 更新时间:2023-11-30 19:11:30 25 4
gpt4 key购买 nike

我正在尝试开发二叉搜索树程序。这是我的主要程序。每次我尝试打印插入树中的值的中序遍历时, printInorder 函数都会说它是空的或 null 。我知道根被初始化为 NULL,但如何让函数知道树不为空?

void main()
{
int pgS, ch;
char chT[MAX], chT2[MAX];
treePtr root = NULL;

menu();
scanf("%d",&ch);

switch(ch)
{
case 1:
fflush(stdin);
printf("\nName of the Content: ");
gets(chT);
printf("\nPage of the content above: ");
scanf("%d",&pgS);
insert(root,pgS,chT);
system("cls");
main();
break;
case 2:
system("cls");
printInOrder(root);
Sleep(5000);
main();
break;
case 3:
printf("\nSearch Content: ");
gets(chT2);
search(root,chT2);
}

getch();
}

一些功能,也许能帮上忙。

treePtr insert(treePtr p, elementType noP, char *Incontent){ //insert elements in the tree
if(p==NULL) {p=createTree(Incontent,noP);}
else {
if(p->pages > noP){
p->left=insert(p->left,noP,Incontent);
p->part=Incontent;
p->pages=noP;
}
else if (p->pages <noP){
p->right=insert(p->right,noP,Incontent);
p->part=Incontent;
p->pages=noP;

}
} return p;
}
void printInOrder(treePtr p){
if (p == NULL){printf("Empty");}
else {
printInOrder(p->left);
printf("\nTABLE OF CONTENTS\n%s\t\t %d ", p->part,p->pages);
printInOrder(p->right);
}
}

最佳答案

您的insert函数调用createTree将新实例分配给 p变量,但您不将此变量分配给 root main 中的变量函数,所以root仍然NULL函数返回后(即 root = insert(root, ...) 可以工作)。

或者,您可以在调用 insert 之前简单地创建根节点树(即 root = createTree(...); )。尽管如此,main函数递归调用自身是一个坏主意。

关于c - 即使我插入了值,为什么它说树为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945890/

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