PAT-python-zjw 2017-06-09 08:05 采纳率: 0%
浏览 931
已采纳

线索二叉树创建问题,无法重复创建?

线索二叉树结构定义:

 typedef char TElemType;         //元素的数据类型根据实际情况而定,这里假设为char

typedef struct Node          //结点结构 
{  
    TElemType      data;      //数据域,用于存储结点数据   
    struct Node  *lchild;     //指针,指向该结点的左孩子或前驱 
    struct Node  *rchild;     //指针,指向该结点的右孩子或后继 
    int        ltag,rtag;     //标志,指示指针指向左右孩子还是前驱后继 
}BiThrNode,*BiThrTree;

创建函数:

 //线索二叉树的先序建立
void CreateBiTree(BiThrTree * T)
{
    char ch;
    scanf("%c",&ch);
    if (ch=='#') *T=NULL;    //如果结点数据为空,则将指针指向空 
    else
    {
        *T=(BiThrTree)malloc(sizeof(BiThrNode));  //申请结点空间 
        if (!*T) exit(OVERFLOW);
        (*T)->data=ch;                       //输入数据,生成根节点
        (*T)->ltag=0;                        //初始化左右标志值 
        (*T)->rtag=0; 
        CreateBiTree(&((*T)->lchild));      //构造左子树 
        CreateBiTree(&((*T)->rchild));      //构造右子树 
    }
}

验证:

 int main()
{
    BiThrTree T1=NULL,T2=NULL;
    printf("按先序遍历建立线索二叉树:\n");
    CreateBiTree(&T1);   //创建树T1
    printf("\nT1创建成功\n"); 
    printf("\n按先序遍历建立线索二叉树:\n");
    CreateBiTree(&T2);    //创建树T2
    printf("\nT2创建成功\n"); 
    return 0;
}

结果是T1可以创建,而T2却无法创建,为什么呢?两次输入的都是相同的先序遍历二叉树啊
图片说明

  • 写回答

1条回答 默认 最新

  • love1code 2017-06-09 09:58
    关注

    因为你在输入第一个线索二叉树时,输入结点完毕后,按下了回车键,它也算一个字符。第二个二叉树T2在创建时接受到的第一个输入就是你留在输入缓冲区的'\n',然后才是你的第二行输入 : ABDH# .......

    修改:

    int main()
    {
    BiThrTree T1=NULL,T2=NULL;
    printf("按先序遍历建立线索二叉树:\n");
    CreateBiTree(&T1); //创建树T1
    printf("\nT1创建成功\n");

    **  while(getchar()!='\n  )    //清空输入缓冲区的多余的回车符,避免对第二次输入造成影响
          ;
            **
    printf("\n按先序遍历建立线索二叉树:\n");
    CreateBiTree(&T2);    //创建树T2
    printf("\nT2创建成功\n"); 
    return 0;
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 一道python难题2
  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备