no_russion 2019-02-13 19:56 采纳率: 33.3%
浏览 589

初学者刚学二叉树,请问为什么这个创建并遍历线索二叉树的程序不出结果

前序遍历创建二叉树输入:ABC空格空格D空格空格E空格F空格空格
按回车之后没有显示结果而是可以继续输入,但是这个二叉树已经输入完成了,为什么会出现这样的问题呢

#include <stdio.h>
#include <stdlib.h>

typedef char elemtype;
typedef enum {Link,Thread} PointerTag;
typedef struct BiThrNode
{
    char data;
    struct BiThrNode *lchild,*rchild;
    PointerTag ltag,rtag;
}BiThrNode,*BiThrTree;


BiThrTree pre;


void creatBiThrTree(BiThrTree *T)
{
    char c;
    scanf("%c",&c);
    if(' '==c)
    {
        *T=NULL;
    }
    else
    {
        *T=(BiThrNode*)malloc(sizeof(BiThrNode));
        (*T)->data=c;
        (*T)->ltag=Link;
        (*T)->rtag=Link;
        creatBiThrTree(&(*T)->lchild);
        creatBiThrTree(&(*T)->rchild);
    }
} 




void InThreading(BiThrTree T)
{
    if(T)
    {
        InThreading(T->lchild);


        if(!T->lchild)  
    {
        T->ltag=Thread;
        T->lchild=pre;  
    }
        if(!pre->rchild)
    {
        pre->rtag=Thread;
        pre->rchild=T;  
    }
    pre=T;

        InThreading(T->rchild);//µÝ¹éÓÒº¢×ÓÏßË÷»¯
    }
}

void InOrderThreading(BiThrTree *p,BiThrTree T)
{
    *p=(BiThrTree)malloc(sizeof(BiThrNode));
    (*p)->ltag=Link;
    (*p)->rtag=Thread;
    (*p)->rchild=*p;
    if(!T)
    {
        (*p)->lchild=*p;
    }
    else
    {
        (*p)->lchild=T;
        pre=*p;
        InThreading(T);
        pre->rchild=*p;
        pre->rtag=Thread;
        (*p)->rchild=pre;
    }
}


void InOrderTraverse(BiThrTree T)
{
    if(T)
    {
    InOrderTraverse(T->lchild);
    printf("%c",T->data);
    InOrderTraverse(T->rchild);
    }
}

int main(int argc, char *argv[]) {
    BiThrTree P,T;
    T==NULL;
    creatBiThrTree(&T);
    InOrderThreading(&P,T);
    InOrderTraverse(P);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • a81836620 2019-02-13 20:14
    关注

    createBiThree()和InOrderTraverse(P);没错,InOrderThreading(&P,T);里面写错了。然后 InThreading(T->lchild)后面掉了分号 InOrderTraverse(BiThrTree T)里的输出应该是%c

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名