C语言递归建立二叉树输入问

论坛 期权论坛 期权     
a3680912   2018-4-26 14:06   3597   1
void createBiTree(BiTree *T)  
{  
    char c;  
    c=getchar();
    if('#' == c)  
        T = NULL;  
    else  
    {  
        T = new BiTreeNode;  
        T->data = c;  
        createBiTree(T->leftChild);  
        create...void createBiTree(BiTree *T)
{
    char c;
    c=getchar();
    if('#' == c)
        T = NULL;
    else
    {
        T = new BiTreeNode;
        T->data = c;
        createBiTree(T->leftChild);
        createBiTree(T->rightChild);
    }
}
输入的时候如果输入ab##c##,可以运行,如果输入一个回车一下就会无限循环下去。这是为什么?回车的干扰?展开
分享到 :
0 人收藏

1 个回复

倒序浏览
2#
热心网友  15级至尊 | 2018-4-30 01:48:44 发帖IP地址来自
#include //头文件
#include
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}
BiTNode,*BiTree;//定义结点类型
BiTree CreateBiTree()//创建树
{
char p;BiTree T;
scanf("%c",&p);
if(p==' ')
T=NULL;
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间
T->data=p;
T->lchild=CreateBiTree();
T->rchild=CreateBiTree();
}
return (T);
}
void PreOrder(BiTree T)//先序
{
if(T!=NULL)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);

}
}
void InOrder(BiTree T)//中序
{
if(T!=NULL)
{
InOrder(T->lchild);
printf("%c",T->data);
InOrder(T->rchild);

}
}
void PostOrder(BiTree T)//后序
{
if(T!=NULL)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
}
void main()//主函数
{
BiTree Ta;
Ta=CreateBiTree();
printf("先序遍历:");
printf("\n");
PreOrder(Ta);
printf("\n");
printf("中序遍历:");
printf("\n");
InOrder(Ta);
printf("\n");
printf("后序遍历:");
printf("\n");
PostOrder(Ta);
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP