主题:[讨论]二叉树
/* c1.h (程序名) */
#include<string.h>
#include<ctype.h>
#include<malloc.h> /* malloc()等 */
#include<limits.h> /* INT_MAX等 */
#include<stdio.h> /* EOF(=^Z或F6),NULL */
#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;
}
高手赐教啊,这样为什么不行?
说出原因啊
谢谢了……
#include<string.h>
#include<ctype.h>
#include<malloc.h> /* malloc()等 */
#include<limits.h> /* INT_MAX等 */
#include<stdio.h> /* EOF(=^Z或F6),NULL */
#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;
}
高手赐教啊,这样为什么不行?
说出原因啊
谢谢了……