您的位置:首页 > 其它

天梯赛L2-006树的遍历---已知中序后序---输出层序遍历

2016-06-16 10:14 441 查看


L2-006. 树的遍历

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

陈越

给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。

输入格式:

输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。

输出格式:

在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。
输入样例:
7
2 3 1 5 7 6 4
1 2 3 4 5 6 7

输出样例:
4 1 6 3 5 7 2


与上篇树的中序后序 确立唯一树,并用层序输出完全相同   

 #include <iostream>

    #include <queue>

    #include <stdlib.h>

    #include <stdio.h>

    using namespace std;

    typedef struct Treenode * TreeBin;

    struct Treenode

    {

        int Data;

        TreeBin Left;

        TreeBin Right;

    };

    TreeBin  CreatTreeBin(int *In,int *Back,int len)
//中后序建树

    {   int i;

        TreeBin T;

        if(len==0)

            return NULL;

        T=(struct Treenode *)malloc(sizeof(struct Treenode));

        T->Data=Back[len-1];

        for(i=0;i<len;i++)

        {

            if(Back[len-1]==In[i])

            {

                break;

            }

        }

        T->Right=CreatTreeBin(In+i+1,Back+i,len-i-1);

        T->Left=CreatTreeBin(In,Back,i);

        return T;

    }

    void OverBinTree(TreeBin bT) //树的层序遍历

    {

        if(!bT)

            return;

        TreeBin T;

        queue<TreeBin> q;

        q.push(bT);

        int flag=0;

        while(q.size())

        {

            if(flag)

                printf(" ");

            if(flag==0)

                flag=1;

            T=q.front();

            q.pop();

            printf("%d",T->Data);

            if(T->Left)

                q.push(T->Left);

            if(T->Right)

                q.push(T->Right);

        }

        return ;

    }

    int main()

    {

        int N;

        cin>>N;

        int In[100],Back[100];

        int i;

        for(i=0;i<N;i++)

            cin>>Back[i];

        for(i=0;i<N;i++)

            cin>>In[i];

        TreeBin T;

        T=CreatTreeBin(In,Back,N);

        OverBinTree(T);

        return 0;
    }

出题人真是照顾我们。学了树就能做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: