从书上看了一个递归建立二叉树的算法(利用前序遍历建立二叉树).代码如下(这个递归的结束条件是输入一个分号";")但是我不明白的是这个分号是从程序的哪里被读入从而结束递归的. 希望高手解答
#include
#include
typedef char Type;
typedef struct BinTNode{
Type data;
struct BinTNode lchild;
struct BinTNode *rchild;
}BinTNode;
//递归建立
void CreateBinTree(BinTNode **T)
{
Type item;
scanf("%c",&item);
if(item==';')return;
if(item!='#')
{
*T=(BinTNode)malloc(sizeof(BinTNode));
(*T)->data=item;
CreateBinTree(&((*T)->lchild));
CreateBinTree(&((*T)->rchild));
}
else
{
(*T)=NULL;
}
}
//前序遍历
void PreOrder(BinTNode *T)
{
// printf("mx");
if(T!=NULL)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
int main()
{
BinTNode *T;
CreateBinTree(&T);
PreOrder(T);
system("pause");
return 0;
}
运行后发现.不管输入"ABC##DE#G##F### ;" 还是"ABC##DE#G##F######### ;" 都可以成功运行
建立起来的二叉树和运行结果如图所示