递归法遍历二叉树 (先序遍历 中序遍历 后序遍历)

来源:互联网 发布:网络简介的阅读答案 编辑:程序博客网 时间:2024/04/30 16:38
#include<stdio.h>
#include<stdlib.h> 
typedef int DataType;
#define MAX 50
typedef struct Node
{
DataType elem;
struct Node *left;
struct Node *right;
}BitNode,*BitTree;
typedef struct Stack
{
BitTree elem[MAX];
int len;
}stack;
BitTree CreateTree()
{
BitTree BT=NULL;
DataType e;
scanf("%d",&e);
if(e!=0)
{
BT=(BitTree)malloc(sizeof(BitNode));
BT->elem=e;
BT->left=CreateTree();
BT->right=CreateTree();
}
return BT;
}
void PreOrderTravel(BitTree BT)//递归法先序遍历 
{
if(BT!=NULL)
{
printf("%d ",BT->elem);
PreOrderTravel(BT->left);
PreOrderTravel(BT->right);
}
}
void MidOrderTravel(BitTree BT)//递归法中序遍历 
{
if(BT!=NULL)
{
  MidOrderTravel(BT->left);
printf("%d ",BT->elem);
MidOrderTravel(BT->right);
}
}
void AfterOrderTravel(BitTree BT)//递归法后序遍历 
{
if(BT!=NULL)
{
  AfterOrderTravel(BT->left);
 AfterOrderTravel(BT->right);
 printf("%d ",BT->elem);
}
}
int main()
{
BitTree BT=NULL;
printf("请输入元素:");
BT=CreateTree(); 
printf("\n先序遍历结果如下:\n");
PreOrderTravel(BT);
printf("\n中序遍历结果如下:\n");
MidOrderTravel(BT);
printf("\n后序遍历结果如下:\n");
AfterOrderTravel(BT);
return 0;
}
0 0
原创粉丝点击