二叉树程序问题,检查了很多遍,没发现错误在哪里,编译连接都可以通过,运行直接关闭程序。
#include <stdio.h>#include<stdlib.h>
typedef struct BiNode
{
char data;
struct BiNode *lchild,*rchild;
}BiNode,*bi_tree;
void create_tree(bi_tree *T)
{
char dat;
dat=getchar();
if(dat=='\n')
*T=NULL;
else
{
*T=(BiNode*)malloc(sizeof(BiNode));
if(*T==NULL)
printf("error!\n");
else{
(*T)->data=dat;
create_tree(&((*T)->lchild));
create_tree(&((*T)->rchild));
}
}
}
void visit(bi_tree T)
{
printf("%c",T->data);
}
void pre_order(bi_tree T)
{ if(T)
{ visit(T);
pre_order(T->lchild);
pre_order(T->rchild);
}
}
void in_order(bi_tree T)
{ if(T)
{ in_order(T->lchild);
visit(T);
in_order(T->rchild);
}
}
void post_order(bi_tree T)
{
if(T)
{post_order(T->lchild);
post_order(T->rchild);
visit(T);
}
}
void main()
{
bi_tree T;
create_tree(&T);
pre_order(T);
in_order(T);
post_order(T);
}
这是别人的一个题目,我当时认为很容易找出其中的错误。可是最后发现自认为正确的程序得不到想要的结果。
主要我对编译环境不太熟悉,调试方法也没掌握多少,编译通过之后没什么错误提示,我仔细看过,还是没找到错误在哪里。
[ 本帖最后由 comewest 于 2014-12-31 11:14 编辑 ]