已知前序(先序)与中序输出后序:
前序:1, 2, 3, 4, 5, 6(根左右)
中序:3, 2, 4, 1, 6, 5(左根右)
分析:因为前序(根左右)最先出现的总是根结点,所以令root为前序中当前的根结点下标(并且同时把一棵树分为左子树和右子树)。start为当前需要打印的子树在中序中的最左边的下标,end为当前需要打印的子树在中序中最右边的下标。递归打印这棵树的后序,递归出口为start > end。i为root所表示的值在中序中的下标,所以i即是分隔中序中对应root结点的左子树和右子树的下标。
先打印左子树,后打印右子树,最后输出当前根结点pre[root]的值。
输出的后序应该为:3, 4, 2, 6, 5, 1(左右根)

#include <cstdio>
using namespace std;
int pre[] = {1, 2, 3, 4, 5, 6};
int in[] = {3, 2, 4, 1, 6, 5};
void post(int root, int start, int end) {if(start > end) return ;int i = start;while(i < end && in[i] != pre[root]) i++;post(root + 1, start, i - 1);post(root + 1 + i - start, i + 1, end);printf("%d ", pre[root]);
}int main() {post(0, 0, 5);return 0;
}

已知前序(先序)与中序输出后序相关推荐

  1. [算法] 已知前序和中序遍历,建立二叉树

    结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和中序遍历顺序,建立二叉树 问题 ...

  2. 二叉树已知前序遍历、中序遍历画出二叉树的形状

    前序遍历: 前序遍历(VLR)是二叉树遍历的一种,也叫做先根遍历.先序遍历.前序周游,可记做根左右.前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1)访问根 ...

  3. 二叉树的建立(已知前序序列和中序序列)

    已知二叉树前序序列和中序序列递归创建二叉树 #include<bits/stdc++.h> using namespace std; typedef struct Node{char da ...

  4. 已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)

    1.文字描述: 已知一颗二叉树的前序(后序)遍历序列和中序遍历序列,如何构建这棵二叉树? 以前序为例子: 前序遍历序列:ABCDEF 中序遍历序列:CBDAEF 前序遍历先访问根节点,因此前序遍历序列 ...

  5. 已知前序中序输出后序(java)返回值是数组

    例子: 前序:1, 2, 3, 4, 5, 6(根左右) 中序:3, 2, 4, 1, 6, 5(左根右) 后序:3, 4, 2, 6, 5, 1(左右根) 1.先说根据前序中序求后序,前序总是沿着根 ...

  6. [算法] 已知前序和后序遍历,建立二叉树

    结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和后序遍历,建立二叉树(不唯一, ...

  7. 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法...

    已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法 #define N 10 //二叉树节点的个数 char postorderstr[]={};//后序序列 char i ...

  8. 1.已知本原多项式,利用Matlb中的simulink构成m序列产生器。2.已知任意本原多项式,利用matlb软件编程求解其对应的m序列以及m序列产生过程。

    1. 已知本原多项式,利用Matlb中的simulink构成m序列产生器.2.已知任意本原多项式,利用matlb软件编程求解其对应的m序列以及m序列产生过程. m序列是最长线性反馈移位寄存器的简称,他 ...

  9. python求近似值_python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配...

    已知一个元素,在一个list中找出相似的元素 使用场景: 已知一个其它来源的字符串, 它有可能是不完全与我数据库中相应的字符串匹配的,因此,我需要将其转为适合我数据库中的字符串 使用场景太绕了, 直接 ...

最新文章

  1. Detected call of `lr_scheduler.step()` before `optimizer.step()`.
  2. Python实例讲解 -- 发送邮件带附件 (亲测)
  3. Hibernate一级缓存与二级缓存的区别
  4. python内置高阶函数求导_Python——函数式编程、高阶函数和内置函数,及
  5. 【Unity3d】【项目学习心得】从资源服务器下载资源(二)
  6. [leetcode] 872. 叶子相似的树(周赛)
  7. DOM扩展-HTML5、专有扩展
  8. js实现视频时间段拖拽编辑
  9. des密钥java实现_java中以DES的方式实现对称加密并提供密钥的实例
  10. 190428每日一句
  11. java list 包含字符串_Java8实战:查找列表中包含的字符串
  12. 阿里云购买域名,以及域名备案(ICP备案)(网站备案)和公安备案(公安联网备案)
  13. 领航跟随型编队(十四)室内定位技术概述
  14. mgo 多条件联合查询
  15. 干货 | “深耕内容”背景下,携程如何做景酒优质内容的挖掘
  16. 程序员需知的 58 个网站,墙裂推荐!
  17. BART中文摘要生成,(nplcc与LCSTS数据集)
  18. 计算机应用方面中文学术论文写作详细总结
  19. 测试工具LoadRunner和OpenSTA比较分析
  20. iOS 文件预览(PDF、Excel、World等)之QuickLook框架

热门文章

  1. Android ListView反复调用getView和getCount
  2. gtk_widget_add_events为某个构件添加一个事件
  3. Hibernate关系映射和HQL
  4. 成功的MES项目,前期都做了些什么?
  5. 20.1 shell脚本介绍 20.2 shell脚本结构和执行 20.3 date命令用法 20.4 shell脚本中的变量...
  6. 数据存储之偏好设置NSUserDefaults
  7. Kafka的通讯协议
  8. sublime theme color
  9. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例
  10. 速修复!这个严重的Zlib内存损坏漏洞已存在17年!