求助!关于二叉树 C

来源:百度知道 编辑:UC知道 时间:2024/06/21 03:54:05
#include <stdio.h>
#include <malloc.h>

struct Node
{
char data;
struct Node *L;
struct Node *R;
};
typedef struct Node treeNode;
typedef treeNode *nodePtr;

void CreateBiTree(nodePtr *, char);
void PreOrder(nodePtr);
void PostOrder(nodePtr);
void InOrder(nodePtr);

void main()
{
char ch;
nodePtr rootPtr= NULL;
printf("以先序遍历输入,建立二叉树,空格表示叶子结点\n");
while((ch = getchar())!= '\n')
{
CreateBiTree(&rootPtr, ch);
}
printf("先序遍历二叉树:");
PreOrder(rootPtr);
printf("\n中序遍历二叉树:");
InOrder(rootPtr);
printf("\n后序遍历二叉树:");
PostOrder(rootPtr);
printf("\n");

}

void CreateBiTree(nodePtr *p, char ch)
{
if(*p == NULL)
{
*p=(treeNode *)malloc(sizeof(treeNode));

if(*p != NULL)

帮你改了生成树函数
你原来的结构不是很清晰
生成函数应该是一个单独的模块

只发程序前半部分

#include <stdio.h>
#include <malloc.h>

struct Node
{
char data;
struct Node *L;
struct Node *R;
};
typedef struct Node treeNode;
typedef treeNode *nodePtr;

nodePtr CreateBiTree();
void PreOrder(nodePtr);
void PostOrder(nodePtr);
void InOrder(nodePtr);

void main()
{
nodePtr rootPtr= NULL;
printf("以先序遍历输入,建立二叉树,空格表示叶子结点\n");
/*
while((ch = getchar())!= '\n')
{
CreateBiTree(&rootPtr, ch);
}
*/
rootPtr=CreateBiTree();
printf("先序遍历二叉树:");
PreOrder(rootPtr);
printf("\n中序遍历二叉树:");
InOrder(rootPtr);
printf("\n后序遍历二叉树:");
PostOrder(rootPtr);
printf("\n");

}

nodePtr CreateBiTree()
{char ch;
node