#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<limits.h>
#include<stdio.h>
#include<stdlib.h> /* atoi() */
#include<io.h> /* eof() */
#include<math.h> /* floor(),ceil(),abs() */
#include<process.h> /* exit() */
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild; /* 左右孩子指针 */
}BiTNode,*BiTree;
void CreateBiTree(BiTNode *T)
{
char ch;
scanf(“%c”,&ch);
if(ch==’ ‘) /* 空 */
T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(!T)
exit(OVERFLOW);
T->data=ch;/* 生成根结点 */
CreateBiTree(T->lchild); /* 构造左子树 */
CreateBiTree(T->rchild); /* 构造右子树 */
}
}
Status Visit(char e)
{
printf(“%c “,e);
return OK;
}
void InOrderTraverse(BiTNode *T)
{
if(T)
{
InOrderTraverse(T->lchild); /* 先中序遍历左子树 */
Visit(T->data); /* 再访问根结点 */
InOrderTraverse(T->rchild); /* 最后中序遍历右子树 */
}
}
main()
{
BiTree BT;
CreateBiTree(BT);
InOrderTraverse(BT);
return 0;
}
高手赐教啊,这样为什么不行?
说出原因啊
谢谢了……
>> 本文固定链接: http://www.vcgood.com/archives/2864
应该是处在建树的时候,因为空格也是字符,所以那个循环不能跳出!改成用整形的的吧!以零为跳出条件!
如果输一个字符,再输一个NULL,应该退出了吧