作者在 2011-05-16 23:22:49 发布以下内容
最近发现许多学生在使用先序创建二叉树时,总是说自己的程序进入了死循环不能退出,这里说明一下,如果你的程序类似于如下:
typedef struct TreeNode
{
int data;
struct TreeNode *Lchild,*Rchild;
}*Tree;
{
int data;
struct TreeNode *Lchild,*Rchild;
}*Tree;
void CreateTree(Tree &t)
{
int ch;
cout<<"输入结点数字:"<<endl;
cin>>ch;
if(ch==0)
t=NULL;
else
{
t=(Tree)new TreeNode;
t->data=ch;
CreateTree(t->Lchild);
CreateTree(t->Rchild);
}
{
int ch;
cout<<"输入结点数字:"<<endl;
cin>>ch;
if(ch==0)
t=NULL;
else
{
t=(Tree)new TreeNode;
t->data=ch;
CreateTree(t->Lchild);
CreateTree(t->Rchild);
}
}
那么就请你再在输入数据对你的程序进行测试之前,先在纸上写一下,看自己输入的测试数据能否构成二叉树,如果不能,自然就不行,当然看似是死循环,其实就是因为你输入的数据不能构成二叉树而已!