注册 登录
编程论坛 数据结构与算法

大家帮忙看看这个二叉树的先序建立与打印输出问题出在哪里?(C语言编写,运行环境VC++6.0)

xichong 发布于 2010-04-21 15:28, 752 次点击
#include <stdio.h>
#include <stdlib.h>
typedef char TElemType;
typedef struct BiTNode
{
    TElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreatBiTree(BiTree T)
{
    TElemType ch;
    scanf("%c",&ch);
    if(ch==' ')
        T=NULL;
    else
    {
        T=(BiTree)malloc(sizeof(BiTNode));
        if(!T)
            exit(0);
        T->data=ch;
        CreatBiTree(T->lchild);
        CreatBiTree(T->rchild);
    }
}
void PrintBiTree(BiTree T)
{
    if(T)
    {
        printf("%c",T->data);
        PrintBiTree(T->lchild);
        PrintBiTree(T->rchild);
    }
}
void main()
{
    BiTNode T;
    printf("请按先序遍历序列输入二叉树中各个结点的值(字符),若为空树时输入空格键:\n");
    CreatBiTree(&T);
    PrintBiTree(&T);
}
4 回复
#2
自欺欺人2010-04-28 22:05
看了半天没看懂……
#3
寒风中的细雨2010-04-29 15:05
#include <stdio.h>
#include <stdlib.h>
typedef int TElemType;
typedef struct BiTNode
{
    TElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreatBiTree(BiTree &T)
{
    TElemType ch;
    scanf("%d",&ch);
    if(ch==9)
        T=NULL;
    else
    {
        T=(BiTree)malloc(sizeof(BiTNode));
        if(!T)
            exit(0);
        T->data=ch;
        CreatBiTree(T->lchild);
        CreatBiTree(T->rchild);
    }
}
void PrintBiTree(BiTree &T)
{
    if(T)
    {
        printf("%d",T->data);
        PrintBiTree(T->lchild);
        PrintBiTree(T->rchild);
    }
}
void main()
{
    BiTree T;
    printf("请按先序遍历序列输入二叉树中各个结点的值(字符),若为空树时输入空格键:\n");
    CreatBiTree(T);
    PrintBiTree(T);
}
#4
寒风中的细雨2010-04-29 15:06
改成了 整型
#5
beyond_one2010-04-29 17:30
void CreatBiTree(BiTree T)函数好像没有退出条件,成了死循环
1