鱼C论坛

 找回密码
 立即注册
查看: 2772|回复: 0

亲们。帮忙看下这个程序的逻辑错误在哪里

[复制链接]
发表于 2014-8-11 18:10:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

#define MAX_TREE_SIZE 100

typedef  char ElemType;
typedef enum {Link,Thread} PointerTag;   //Link == 0:指向孩子;Thread == 1:指向线索

//二叉树的结构定义
typedef struct BiThrNode
{
    ElemType data;
    struct BiThrNode *lchild, *rchild;
    PointerTag LTag,RTag;   //左右标志
}BiThrNode, *BiThrTree;

BiThrTree pre;
int level;
//创建二叉树,(前序遍历)
void CreateBiTree(BiThrTree T)
{
    ElemType c;
    scanf("%c",&c);
        if(' ' == c )
        {
            T = NULL;
        }
        else
        {
            T = (BiThrTree)malloc(sizeof(BiThrNode));
            T->data = c;
            T->LTag = Link;
            T->RTag = Link;
            CreateBiTree(T->lchild);
            CreateBiTree(T->rchild);
        }
}

//二叉树的线索化
void InTraverse(BiThrTree T)
{
    if(T)
    {
        InTraverse(T->lchild);
        if( !T->lchild )
        {
            T->LTag = Thread;
            T->lchild = pre;
        }
        if( !pre->rchild )
        {
            pre->RTag = Thread;
            pre->rchild = T;
        }
        pre = T;
        InTraverse(T->rchild);
    }
}
void InTraversing(BiThrTree temp,BiThrTree T)
{
    BiThrTree p;
    p = temp;
    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;
        InTraverse(T);
        pre->rchild = p;
        pre->RTag = Thread;
        p->rchild = pre;

    }
}

//访问二叉树结点
void visit(ElemType e,int level)
{
        printf("%c 在第 %d 层\n",e,level);
}
//遍历二叉树(前序遍历)
void PreOrderTraverse(BiThrTree T,int level)
{
    if( T )
    {
        PreOrderTraverse(T->lchild,level++);
        visit(T->data,level);
        PreOrderTraverse(T->rchild,level++);
    }
}
int main()
{
    BiThrTree head,T = NULL;
    CreateBiTree(T);
    InTraversing(head,T);
    PreOrderTraverse(T,level);
    system("pause");
    return 0;
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-16 07:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表