递归法遍历二叉树 (先序遍历 中序遍历 后序遍历)
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;
}
#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;
}
相关文章推荐
- C实现二叉树的先序遍历,中序遍历,后序遍历
- 二叉树BiTree的先序遍历.中序遍历.后序遍历.结点数.叶子结点数和数的高度
- 二叉树重建 - (先序遍历、中序遍历、后序遍历)
- 一个关于二叉树的创建、先序遍历、中序遍历、后序遍历、求叶子节点的完整函数的c语言完整程序。
- 二叉树的创建,先序遍历,中序遍历,后序遍历
- 给定二叉树的先序遍历中序遍历,求后序遍历
- 实现二叉树的先序遍历、中序遍历、后序遍历的递归非递归算法以及层次遍历算法
- 二叉树先序遍历,中序遍历,后序遍历
- [算法] 二叉树的 先序遍历、中序遍历、后序遍历
- java实现二叉树的先序遍历,中序遍历,后序遍历
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- 写出二叉树的先序遍历、中序遍历、后序遍历。
- 已知二叉树先序遍历中序遍历求后序遍历
- 二叉树先序遍历,中序遍历,后序遍历递归非递归方法
- 二叉树的创建(先序创建的)及先序遍历 中序遍历 后序遍历的递归和非递归实现
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- 创建一个二叉树(先序遍历、中序遍历、后序遍历)
- 二叉树的遍历代码(先序遍历,中序遍历,后序遍历)
- 二叉树非递归先序遍历、中序遍历、后序遍历
- 实现二叉树的先序遍历、中序遍历、后序遍历