这是我的迭代顺序遍历代码。它根本没有给我输出,它所做的就是给我一个空白屏幕。如果有人能检查我的代码并告诉我哪里出了错,那将是非常有帮助的。
void iterativeInorder(struct node *root) {
if(root==NULL) {
return;
}
struct node *stack[100];
int top=0;
while(root) {
if(root!=NULL) {
stack[top++]=root;
root=root->left;
}
else {
if(top==0) {
break;
}
root=stack[--top];
printf("%d ", root->data);
root=root->right;
}
}
}发布于 2021-02-13 23:36:37
错误出现在while-条件中。想想看:当while条件为true时,下一个if条件也为true,因此您永远不会进入else块。
您应该退出循环的唯一时间是在命中此break时
if(top==0) {
break;
}因此,通过将您的while转换为:
while(true) {https://stackoverflow.com/questions/66186417
复制相似问题