用递归方法遍历二叉树 分别用 先序中序后序遍历 为什么输入到二叉树之后不往下运行呢??

#include<stdio.h>
#include <malloc.h>
#include<string.h>
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node *LChild;
struct Node *RChild;
}BitNode,*BitTree;

/*先序创建二叉树*/
void CreatBiTree(BitTree *bt)
{
char ch;
ch=getchar();
if(ch == '.') *bt = NULL;
else
{
*bt = (BitTree)malloc(sizeof(BitNode));
(*bt)->data = ch;
CreatBiTree(&((*bt)->LChild));
CreatBiTree(&((*bt)->RChild));
}
}

void Visit(char ch)
{
printf("%c ",ch);
}

/*先序遍历二叉树*/
void PreOrder(BitTree root)
{
if (root != NULL)
{
Visit(root->data);
PreOrder(root->LChild);
PreOrder(root->RChild);
}
}

/*中序遍历二叉树*/
void InOrder(BitTree root)
{
if (root != NULL)
{
InOrder(root->LChild);
Visit(root->data);
InOrder(root->RChild);
}
}

/* 后序遍历二叉树*/
void PostOrder(BitTree root)
{
if(root != NULL)
{
PostOrder(root->LChild);
PostOrder(root->RChild);
Visit(root->data);
}
}

int main(void)
{
BitTree T;
int h;
int layer;
int treeleaf;
layer=0;
printf("请输入二叉树中的元素(以扩展先序遍历序列输入,其中.代表空子树):\n");
CreatBiTree(&T);
printf("先序遍历序列为:");
PreOrder(T);
printf("\n中序遍历序列为:");
InOrder(T);
printf("\n后序遍历序列为:");
system("pause");
}

//因为你没有在主函数里添加 PostOrder(T); 所以不执行后序遍历

#include<stdio.h>
#include <malloc.h>
#include<string.h>
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node *LChild;
struct Node *RChild;
}BitNode,*BitTree;

/*先序创建二叉树*/
void CreatBiTree(BitTree *bt)
{
char ch;
ch=getchar();
if(ch == '.') *bt = NULL;
else
{
*bt = (BitTree)malloc(sizeof(BitNode));
(*bt)->data = ch;
CreatBiTree(&((*bt)->LChild));
CreatBiTree(&((*bt)->RChild));
}
}

void Visit(char ch)
{
printf("%c ",ch);
}

/*先序遍历二叉树*/
void PreOrder(BitTree root)
{
if (root != NULL)
{
Visit(root->data);
PreOrder(root->LChild);
PreOrder(root->RChild);
}
}

/*中序遍历二叉树*/
void InOrder(BitTree root)
{
if (root != NULL)
{
InOrder(root->LChild);
Visit(root->data);
InOrder(root->RChild);
}
}

/* 后序遍历二叉树*/
void PostOrder(BitTree root)
{
if(root != NULL)
{
PostOrder(root->LChild);
PostOrder(root->RChild);
Visit(root->data);
}
}

int main(void)
{
BitTree T;
int h;
int layer;
int treeleaf;
layer=0;
printf("请输入二叉树中的元素(以扩展先序遍历序列输入,其中.代表空子树):\n");
CreatBiTree(&T);
printf("先序遍历序列为:");
PreOrder(T);
printf("\n中序遍历序列为:");
InOrder(T);
printf("\n后序遍历序列为:");
PostOrder(T);
return 1;
}
温馨提示:答案为网友推荐,仅供参考
相似回答