数据结构/PTA-据后序和中序遍历输出先序遍历/树

Posted elegantcloud

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构/PTA-据后序和中序遍历输出先序遍历/树相关的知识,希望对你有一定的参考价值。

据后序和中序遍历输出先序遍历

-1 根据后序和中序遍历输出先序遍历 (25分)

本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。

输入格式:

第一行给出正整数N(30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。

输出格式:

在一行中输出Preorder:以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。

输入样例:

7
2 3 1 5 7 6 4
1 2 3 4 5 6 7
 

输出样例:

Preorder: 4 1 3 2 6 5 7
#include<bits/stdc++.h>
using namespace std;
typedef struct BiTNode
{
    struct BiTNode *lchild;
    struct BiTNode *rchild;
    int data;
} BiTNode, *BiTree;
BiTree Plustree(int *in,int *post,int n)
{
    if(n<=0)
        return NULL;
    else
    {
        BiTree T=new BiTNode;
        T->data=post[n-1];
        int i=0;
        for(i=0; i<n; i++)
        {
            if(post[n-1]==in[i])
                break;
        }
        T->lchild = Plustree(in, post, i);
        T->rchild = Plustree(in+i+1,post+i,n-i-1);
        return T;
    }
}
void preorderTraversal( BiTree BT )//前序遍历
{
      if(BT){
        cout << " " << BT->data;
        preorderTraversal(BT->lchild);
        preorderTraversal(BT->rchild);
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    int b[32],a[32];
    BiTree T;
    for(int i=0; i<n; i++)
        cin>>a[i];
    for(int i=0; i<n; i++)
        cin>>b[i];
    T=Plustree(b,a,n);

    printf("Preorder:");
    preorderTraversal(T);


}

 

以上是关于数据结构/PTA-据后序和中序遍历输出先序遍历/树的主要内容,如果未能解决你的问题,请参考以下文章

数据结构树 —— 编程作业 04 :根据后序和中序遍历输出先序遍历

已知先序和中序 求后序

根据后序和中序遍历输出先序遍历

PTA 二叉树的三种遍历(先序中序和后序)

根据先序和中序实现后序

通过遍历序列构造二叉树(扩展二叉树的先序先序和中序后序和中序层序和中序)附可执行完整代码