二叉树的前、中、后序遍历又分为:
1.递归遍历
2.非递归遍历
本文介绍递归遍历。
非递归遍历(戳这里!)
基本功能
1.利用前序遍历的思想创建二叉树
2.前、中、后序遍历
代码
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef char ElemType;
typedef struct BiTNode{
ElemType data;
struct BiTNode *l,*r;
}BiTNode,*BiTree;
//利用前序遍历思想创建二叉树
void creat_BinTree(BiTree &BT){
char ch;
scanf("%c",&ch);
if(ch=='#'){
BT=NULL;
}else{
//创建根结点
BT=(BiTNode *)malloc(sizeof(BiTNode));
BT->data=ch;
BT->l=NULL;
BT->r=NULL;
creat_BinTree(BT->l);
creat_BinTree(BT->r);
}
}
//前序遍历二叉树
void PreOreder(BiTree BT){
if(BT==NULL)return;
else{
printf("%c ",BT->data);
PreOreder(BT->l);
PreOreder(BT->r);
}
}
//中序遍历二叉树
void InOrder(BiTree BT){
if(BT==NULL)return;
else{
InOrder(BT->l);
printf("%c ",BT->data);
InOrder(BT->r);
}
}
//后序遍历
void PostOrder(BiTree BT){
if(BT==NULL)return;
else{
PostOrder(BT->l);
PostOrder(BT->r);
printf("%c ",BT->data);
}
}
int main(){
BiTree BT;
printf("请按照前序遍历输入树:\n");
creat_BinTree(BT);
printf("前序遍历的结果:\n");
PreOreder(BT);
printf("\n中序遍历的结果:\n");
InOrder(BT);
printf("\n后序遍历的结果:\n");
PostOrder(BT);
return 0;
}