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("\n");
    return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

二叉堆

容易证明: 一棵高为h的完全二叉树有2^h 到 2^(h+1)-1个结点。 这就意味着,完全二叉树的高是[logN] 特点: 任意位置i: 左儿子在位置2i上,...

21380
来自专栏Code_iOS

数据结构:集合

工程代码 Github: Data_Structures_C_Implemention -- Set

33730
来自专栏机器学习实践二三事

leetcode之-题19

题目 [图片] Given a linked list, remove the nth node from the end of list and re...

20570
来自专栏赵俊的Java专栏

LeetCode 804 Unique Morse Code Words

首先为每个单词的每个字符进行转码, 将转码后的数据放到 Set 集合中, 最后返回 Set 的长度。

11440
来自专栏我是业余自学C/C++的

二叉树 原

对高度为h的满二叉树的元素,从第一层到最后一层,在每一次中从左至右,顺序编号,从1到2^h-1.假设从满二叉树中删除k个其编号为2^h-i元素,1<=i<=k<...

11120
来自专栏五分钟学算法

每天一算:Binary Tree Preorder Traversal

下面这种写法使用了一个辅助结点p,这种写法其实可以看作是一个模版,对应的还有中序和后序的模版写法,形式很统一,方便于记忆。后续更新的中序和后序文章中都会补充该写...

9920
来自专栏Android知识点总结

Java总结之容器家族--Collection

Set的操作比较少,基本上也就是Collection传下来的方法 Set一般基于Map来实现:HashSet、LinkedHashSet、TreeSet的特性...

17720
来自专栏码匠的流水账

聊聊storm nimbus的mkAssignments

storm-2.0.0/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.jav...

13620
来自专栏软件开发 -- 分享 互助 成长

java中大数类的学习

java中提供了大数类BigInteger和BigDecimal分别表示大整数类和大浮点数类,这两个类都在java.math.*包中,因此每次必须在开头处引用该...

26950
来自专栏desperate633

HashSet实现原理分析(Java源码剖析)add(E e)remove(Object o)iterator()小结

本文将深入讨论HashSet实现原理的源码细节。在分析源码之前,首先我们需要对HashSet有一个基本的理解。

29830

扫码关注云+社区

领取腾讯云代金券