Dili_iiii

编码全要靠底力

二叉树的遍历

#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;
}

前序,中序,后序

posted @ 2018-08-19 20:17  Dili_iiii  阅读(145)  评论(0编辑  收藏  举报