您的位置:首页 > 其它

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

2016-10-09 21:13 423 查看
#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐