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

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


题目思路:
1.根据先序和中序可以确定一颗唯一的二叉树,采用递归的手段建立一颗二叉树。
2.建立完以后,进行常规的DLR递归遍历。

#include<iostream>
using namespace std;typedef struct tree {int data;tree* left;tree* right;
} * BinTree;
BinTree BuildTree(int* post, int* in, int n);
void DLR(BinTree T);
int main()
{int n;cin >> n;int inorder[30], postorder[30];for (int i = 0; i < n; i++)cin >> postorder[i];for (int i = 0; i < n; i++)cin >> inorder[i];BinTree T = BuildTree(postorder, inorder, n);cout << "Preorder:";DLR(T);return 0;
}
BinTree BuildTree(int* post, int* in, int n)
{if (n == 0)return NULL;else{int* mid = in;while(*mid != *(post + n - 1))mid++;int m = mid - in;        //找到树根的位置BinTree T = new tree;T->data = *mid;T->left = BuildTree(post, in, m); //以后序和中序中前m个节点建立左子树T->right = BuildTree(post + m, in + m + 1, n - m - 1);//建立T的右子树return T;}}
void DLR(BinTree T)
{if (T){cout << " " << T->data;DLR(T->left);DLR(T->right);}
}

练习4.1 根据后序和中序遍历输出先序遍历 (25 分)相关推荐

  1. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)

    7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...

  2. 7-9 根据后序和中序遍历输出先序遍历 (10 分)

    7-9 根据后序和中序遍历输出先序遍历 (10 分) 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. 输入格式: 第一行给出正整数N(≤30),是树中结点的个数.随后两 ...

  3. 刷题之完全二叉树的权值和小字辈及根据后序和中序遍历输出先序遍历

    1.完全二叉树的权值 1)题目 给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下.从左到右的顺序依次是 A1, A2, ··· AN,如下图所示: 现在小明要把相同深度的节 ...

  4. 4-15 根据后序和中序遍历输出先序遍历

    4-15 根据后序和中序遍历输出先序遍历 分数 15 作者 DS课程组 单位 浙江大学 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. 输入格式: 第一行给出正整数N( ...

  5. pta 7-6 根据后序和中序遍历输出先序遍历 (25 分)

    大家不会的可以看一下我的一篇文章我是链接-关于二叉树遍历的基础知识 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. 输入格式: 第一行给出正整数N(≤30),是树中结点 ...

  6. 天梯选拔:先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数

    思路分析: 这道题考察二叉树的建立以及二叉树的前序遍历.中序遍历和后序遍历.首先按照先序建立二叉树.在这期间需要先建立一个结构体,包括当前节点的值,以及它的左儿子和右儿子.注意这里不能直接存左儿子和右 ...

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

    本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. 输入格式: 第一行给出正整数N(≤30),是树中结点的个数.随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果, ...

  8. 由树先序遍历和中序遍历输出其后续遍历

    递归的三个必要条件 1. 弄明白递归的顺序.在递归的实现中,需要假设后续的调用已经完成,在此基础上,才实现递归的算法,先考虑后面的逻辑. 2. 分析清楚递归体的逻辑,然后写出来.具体的递归体需要解决什 ...

  9. java输出乱序日语假名

    package com.test;import java.util.ArrayList; import java.util.Arrays; import java.util.List; import ...

  10. ACMNO.27 Python的两行代码解决 C语言-字符逆序 写一函数。使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串

    题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 来源 ...

最新文章

  1. 为什么极度随机树比随机森林更随机?这个极度随机的特性有什么好处?在训练阶段、极度随机数比随机森林快还是慢?
  2. html实现ppt缩放效果,Powerpoint 2016缩放功能详解(附案例)
  3. PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解...
  4. linux怎么在ETC文件夹内新建,教你如何手动新建Linux用户
  5. python中文版免费下载-Python IDLE汉化版下载
  6. python开发环境
  7. linux sleeping进程多_你知道Linux进程的睡眠和唤醒操作?
  8. 路由器回执路由配置_三分钟学会路由器各参数功能及设置方法
  9. ubuntu18.04安装谷歌拼音输入法(Google Pinyin)
  10. JavaScript (05)-大话JS,屌丝逆袭(四)
  11. qt 获取用户缩放,Qt-如何创建随窗口缩放并保持纵横比的图像?
  12. Labview产生TTL信号
  13. Aurora 64B66B IP核的硬件跑通
  14. codeforces 581B Luxurious Houses(线段树点更新,区间查询)
  15. 美国撞击小行星的宇宙飞船成功改变行星轨道
  16. Java implements和extends的区别
  17. pci总线定时协议_PCI总线标准协议(中文版)
  18. 【力扣】6. Z 字形变换
  19. 编译 Facebook SDK for Unity
  20. 使用ActiveX控件开发网页常见的问题

热门文章

  1. 自己写的一个简单的php快速开发框架(JPrass)
  2. 用好Windows 7自带文件加密工具
  3. PowerPoint优点全体验
  4. 机器学习资料合计(一)
  5. Java 基本语法----数组
  6. 从项目、产品、运营型看发展
  7. struts2学习——拦截器
  8. 关于通用配置管理模块的思考-续(用XmlDocument 还是DataSet)
  9. 关于LeNet-5卷积神经网络 S2层与C3层连接的参数计算的思考???
  10. magento权限设置