主题:[讨论]求助一个关于二叉树的问题!!!
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#define NULL 0
struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
};
typedef struct BiTNode BiTnode;
typedef struct BiTNode *BiTree;
void CreatBiTree(BiTree T)
{
char ch;
printf("\nEnter a char:");
scanf("%c",&ch);
if(ch=='#')T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTnode));
if(!T)
{
printf("OverFlow");
getch();
exit(0);
}
T->data=ch;
CreatBiTree(T->lchild);
CreatBiTree(T->rchild);
}
}
void Print(BiTree T)
{
if(T!=NULL)
{
printf("\n%s",T->data);
if(T->lchild!=NULL || T->rchild!=NULL)
{
Print(T->lchild);
Print(T->rchild);
}
}
}
void main()
{
BiTnode bt;
clrscr();
CreatBiTree(&bt);
Print(&bt);
}/*end*/
以上程序有问题吗,为什么它会不停的递归呢?大家帮帮忙看下,谢谢了!
#include<conio.h>
#include<malloc.h>
#define NULL 0
struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
};
typedef struct BiTNode BiTnode;
typedef struct BiTNode *BiTree;
void CreatBiTree(BiTree T)
{
char ch;
printf("\nEnter a char:");
scanf("%c",&ch);
if(ch=='#')T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTnode));
if(!T)
{
printf("OverFlow");
getch();
exit(0);
}
T->data=ch;
CreatBiTree(T->lchild);
CreatBiTree(T->rchild);
}
}
void Print(BiTree T)
{
if(T!=NULL)
{
printf("\n%s",T->data);
if(T->lchild!=NULL || T->rchild!=NULL)
{
Print(T->lchild);
Print(T->rchild);
}
}
}
void main()
{
BiTnode bt;
clrscr();
CreatBiTree(&bt);
Print(&bt);
}/*end*/
以上程序有问题吗,为什么它会不停的递归呢?大家帮帮忙看下,谢谢了!