我想在主函數中先創建一個二叉樹,然後再遍歷。但我的程序調用CreateBiTree輸入完要輸入的數之後,還是一直在等待輸入,無法停止。以致無法執行到後面的遍歷二叉樹函數。望高手給解答下!
#include
#include
#include
struct BiTree
{
int data;
struct BiTree *lchild;
struct BiTree *rchild;
};
int CreateBiTree(BiTree *t)
{
int ch;
scanf("%d", &ch);
if(ch==' ') t = NULL;
else
{
if( !( t=(BiTree*)malloc(sizeof(BiTree))) )
exit(1);
t->data=ch;
CreateBiTree(t->lchild);
CreateBiTree(t->rchild);
}
return 0;
}
int visit(BiTree *BT)
{
if(BT!=NULL)
{
printf("%d ",BT->data);
visit(BT->lchild);
visit(BT->rchild);
}
return 0;
}
int main()
{
BiTree *bitree;
CreateBiTree(bitree);
visit(bitree);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
struct BiTree
{
int data;
struct BiTree *lchild;
struct BiTree *rchild;
};
int CreateBiTree(BiTree **t)
{
int ch;
scanf("%d", &ch);
if(ch==0)
{
*t = NULL;
return 0;
}
else
{
if( !( *t=(BiTree*)malloc(sizeof(BiTree))) )
exit(1);
(*t)->data=ch;
CreateBiTree(&(*t)->lchild);
CreateBiTree(&(*t)->rchild);
}
return 0;
}
int visit(BiTree *BT)
{
if(BT!=NULL)
{
printf("%d ",BT->data);
visit(BT->lchild);
visit(BT->rchild);
}
return 0;
}
int main()
{
BiTree *bitree;
CreateBiTree(&bitree);
visit(bitree);
return 0;
}