gpt4 book ai didi

c - 打印二叉树时无限循环

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:14 24 4
gpt4 key购买 nike

这是我的代码,除了 printInTree() 中的无限循环外,它几乎可以正常工作

struct node{
char text[100];
int count;
struct node* left;
struct node* right;
};

struct node* addNode(struct node* n,char w[]){
int cond=0;
if(n == NULL){
n=malloc(sizeof(struct node));
n->count=1;
n->left=NULL;
n->right=NULL;
strcpy(n->text,w);
}
else if((cond=strcmp(w,n->text))==0){
n->count++;
}
else if(cond>0){
n->right=addNode(n->right,w);
}
else{
n->left=addNode(n->left,w);
}
return n;
};

void printInTree(struct node* p){
while(p != NULL){ //infinite loop here.
printInTree(p->left);
printf("%3s - %d\n",p->text,p->count);
printInTree(p->right);

}
}

void b_treeDemo(){
struct node *root=NULL;
FILE* f=fopen("main.c","r");
char word[100];
while(1){
if(getWord(f,word)>0){
if(isalpha(word[0])){
root=addNode(root,word);
}
}else{
break;
}
}
printInTree(root);
}

如何打破这个循环,以便它按顺序打印树。

最佳答案

p 在循环中不会改变,什么会使它成为有限的?你想做的可能是

if(!p) return;

而不是 while 循环。 (首先要了解递归,您需要了解递归)。

关于c - 打印二叉树时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19598144/

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