//二叉树的前中后序遍历【递归法】
#include <iostream>
using namespace std;
//结点结构体
typedef struct BTnode{
char data; //自己的数据
BTnode * lch; //左孩子
BTnode * rch; //右孩子
}BTnode,* BTree;
//前序遍历【根左右】 前中后代码理解完全一样
void pre_traverse(BTree &T){
if(T==NULL){
return ;
}
//根 [只需要输出根]
cout<<T->data<<" ";
//左
pre_traverse(T->lch);
//右
pre_traverse(T->rch);
}
//中序遍历【左根右】
void mid_traverse(BTree &T){
if(T==NULL)
return ;
mid_traverse(T->lch);
cout<<T->data<<" ";
mid_traverse(T->rch);
}
//后序遍历 【左右根】
void last_traverse(BTree &T){
if(T==NULL)
return ;
last_traverse(T->lch);
last_traverse(T->rch);
cout<<T->data<<" ";
}
int main()
{
//创建七个空结点
BTnode* NodeA=new BTnode;
BTnode* NodeB=new BTnode;
BTnode* NodeC=new BTnode;
BTnode* NodeD=new BTnode;
BTnode* NodeE=new BTnode;
BTnode* NodeF=new BTnode;
BTnode* NodeG=new BTnode;
//给七个结点赋自己的值
NodeA->data='A';
NodeB->data='B';
NodeC->data='C';
NodeD->data='D';
NodeE->data='E';
NodeF->data='F';
NodeG->data='G';
//给七个结点弄好关系 别忘记每个结点的空关系也要写,必须!
NodeA->lch=NodeB;
NodeA->rch=NodeC;
NodeB->lch=NULL;
NodeB->rch=NodeD;
NodeC->lch=NodeE;
NodeC->rch=NodeF;
NodeD->lch=NULL;
NodeD->rch=NULL;
NodeE->lch=NULL;
NodeE->rch=NodeG;
NodeF->lch=NULL;
NodeF->rch=NULL;
NodeG->lch=NULL;
NodeG->rch=NULL;
//前序遍历
cout<<"前序遍历:";
pre_traverse(NodeA);
cout<<endl;
//中序遍历
cout<<"中序遍历:";
mid_traverse(NodeA);
cout<<endl;
//后序遍历
cout<<"后序遍历:";
last_traverse(NodeA);
cout<<endl;
return 0;
}
标签:traverse,遍历,前中,rch,二叉树,NULL,data,lch
From: https://www.cnblogs.com/kathryn921/p/16986860.html