[模板]二叉树的前、中、后序遍历
二叉树是一个我们十分熟悉的一个数据结构
但二叉树的题也没有多少,其中求前中后序遍历就是最经典的题了
#include<iostream> #include<fstream> #define Data arr[pos].data #define Lson arr[pos].lson #define Rson arr[pos].rson using namespace std; struct edge { char data; int lson,rson; }arr[27]; int n; void input(); void Preorder(int); void Post_order(int); void Sequential(int); int main() { input(); Preorder(1); printf("\n"); Sequential(1); printf("\n"); Post_order(1); return 0; } void input() { register int i; scanf("%d",&n); for(i=1;i<=n;i++){ cin>>arr[i].data; scanf("%d%d",&arr[i].lson,&arr[i].rson); } return; } //前序遍历 void Preorder(int pos) { printf("%c",Data); if(Lson)Preorder(Lson); if(Rson)Preorder(Rson); return; } //中序遍历 void Sequential(int pos) { if(Lson)Sequential(Lson); printf("%c",Data); if(Rson)Sequential(Rson); return; } //后序遍历 void Post_order(int pos) { if(Lson)Post_order(Lson); if(Rson)Post_order(Rson); printf("%c",Data); return; }
但实际上各个遍历就是换了个递归顺序而已,太水了
博主是初中蒟蒻,能力弱,还请大家多多提出改进建议