二叉树的遍历
#include <bits/stdc++.h> #define ll long long #define ull unsigned long long #define ld long double using namespace std; const int maxn=20010; const int NIL=0; struct node { int p,l,r; }T[maxn]; int n; void preParse(int u) { if(u==NIL) return; cout<<u<<" "; preParse(T[u].l); preParse(T[u].r); } void inParse(int u) { if(u==NIL) return; inParse(T[u].l); cout<<u<<" "; inParse(T[u].r); } void postParse(int u) { if(u==NIL) return; postParse(T[u].l); postParse(T[u].r); cout<<u<<" "; } int main() { int v,l,r,root; cin>>n; for(int i=1;i<=n;i++) { T[i].p=NIL; } for(int i=1;i<=n;i++) { cin>>l>>r; T[i].l=l; T[i].r=r; if(l!=NIL) T[l].p=i; if(r!=NIL) T[r].p=i; } for(int i=1;i<=n;i++) { if(T[i].p==NIL) root=i; preParse(root); cout<<endl; inParse(root); cout<<endl; postParse(root); cout<<endl; break; } return 0; }
前序,中序,后序