zoukankan      html  css  js  c++  java
  • PTA 根据后序和中序遍历输出先序遍历(25 分)

    7-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;
    void getpre(int *a, int *b, int n) {
        if(n <= 0) return;
        int root = a[n - 1];
        int i;
        for(i = 0; i < n; i++) {
            if(b[i] == root) {
                break;
            }
        }
        cout << ' ' << root;
        getpre(a, b, i);
        getpre(a + i, b + i + 1, n - i - 1);
    }
    int main() {
        int lastscan[40], midscan[40];
        int n;
        cin >> n;
        int i, j;
        for(i = 0; i < n; i++) {
            scanf("%d", &lastscan[i]);
        }
        for(i = 0; i < n; i++) {
            scanf("%d", &midscan[i]);
        }
        printf("Preorder:");
        getpre(lastscan, midscan, n);
        printf("
    ");
        return 0;
    }
    

      

  • 相关阅读:
    41:和为S的两个数
    40:数组中只出现一次的数字
    39-2:平衡二叉树
    39:二叉树的深度
    38:数字在排序数组中出现的次数
    37:两个链表的第一个公共结点
    36:数组中的逆序对
    35:第一个只出现一次的字符
    34:丑数
    33:把数组排成最小的数
  • 原文地址:https://www.cnblogs.com/masterchd/p/7801541.html
Copyright © 2011-2022 走看看