二叉树遍历

来源:互联网 发布:云计算和大数据的作用 编辑:程序博客网 时间:2024/05/11 00:50

2014年第三题


根据题目要求,先建树,建好树之后进行遍历即可

#include <iostream>using namespace std;struct Node{    int val;    Node *lchild;    Node *rchild;};Node Tree[10000];int local;void preOrder(Node* T){    cout << T->val << ' ';    if (T->lchild != NULL)    {        preOrder(T->lchild);    }    if (T->rchild != NULL)    {        preOrder(T->rchild);    }}void inOrder(Node* T){    if (T->lchild != NULL)    {        inOrder(T->lchild);    }    cout << T->val << ' ';    if (T->rchild != NULL)    {        inOrder(T->rchild);    }}void postOrder(Node* T){    if (T->lchild != NULL)    {        postOrder(T->lchild);    }    if (T->rchild != NULL)    {        postOrder(T->rchild);    }    cout << T->val << ' ';}Node* creat(){    Tree[local].lchild = Tree[local].rchild = NULL;    local++;    return &Tree[local-1];}Node* insert(Node* T,int a,int b,int c){    if (T->val == a)    {        if (b != -1)        {            Node *p = creat();            p -> val = b;            T -> lchild = p;        }        else T->lchild = NULL;        if (c != -1)        {            Node *q = creat();            q -> val = c;            T -> rchild = q;        }        else T->rchild = NULL;        return T;    }    else if (T->val != a)    {        if (T->lchild != NULL)        {            T->lchild = insert(T->lchild,a,b,c);        }        if (T->rchild != NULL)        {            T->rchild = insert(T->rchild,a,b,c);        }    }    return T;}int main(){    int n;    cin >> n;    local = 0;    Node *T = creat();    T -> val = 0;    for (int i = 0;i < n;i++)    {        int a,b,c;        cin >> a >> b >> c;        T = insert(T,a,b,c);    }    preOrder(T);    cout << endl;    inOrder(T);    cout << endl;    postOrder(T);    cout << endl;}


0 0