已知前序(先序)与中序输出后序
已知前序(先序)与中序输出后序:
前序: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;
}
已知前序(先序)与中序输出后序相关推荐
- [算法] 已知前序和中序遍历,建立二叉树
结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和中序遍历顺序,建立二叉树 问题 ...
- 二叉树已知前序遍历、中序遍历画出二叉树的形状
前序遍历: 前序遍历(VLR)是二叉树遍历的一种,也叫做先根遍历.先序遍历.前序周游,可记做根左右.前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1)访问根 ...
- 二叉树的建立(已知前序序列和中序序列)
已知二叉树前序序列和中序序列递归创建二叉树 #include<bits/stdc++.h> using namespace std; typedef struct Node{char da ...
- 已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)
1.文字描述: 已知一颗二叉树的前序(后序)遍历序列和中序遍历序列,如何构建这棵二叉树? 以前序为例子: 前序遍历序列:ABCDEF 中序遍历序列:CBDAEF 前序遍历先访问根节点,因此前序遍历序列 ...
- 已知前序中序输出后序(java)返回值是数组
例子: 前序:1, 2, 3, 4, 5, 6(根左右) 中序:3, 2, 4, 1, 6, 5(左根右) 后序:3, 4, 2, 6, 5, 1(左右根) 1.先说根据前序中序求后序,前序总是沿着根 ...
- [算法] 已知前序和后序遍历,建立二叉树
结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和后序遍历,建立二叉树(不唯一, ...
- 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法...
已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法 #define N 10 //二叉树节点的个数 char postorderstr[]={};//后序序列 char i ...
- 1.已知本原多项式,利用Matlb中的simulink构成m序列产生器。2.已知任意本原多项式,利用matlb软件编程求解其对应的m序列以及m序列产生过程。
1. 已知本原多项式,利用Matlb中的simulink构成m序列产生器.2.已知任意本原多项式,利用matlb软件编程求解其对应的m序列以及m序列产生过程. m序列是最长线性反馈移位寄存器的简称,他 ...
- python求近似值_python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配...
已知一个元素,在一个list中找出相似的元素 使用场景: 已知一个其它来源的字符串, 它有可能是不完全与我数据库中相应的字符串匹配的,因此,我需要将其转为适合我数据库中的字符串 使用场景太绕了, 直接 ...
最新文章
- Detected call of `lr_scheduler.step()` before `optimizer.step()`.
- Python实例讲解 -- 发送邮件带附件 (亲测)
- Hibernate一级缓存与二级缓存的区别
- python内置高阶函数求导_Python——函数式编程、高阶函数和内置函数,及
- 【Unity3d】【项目学习心得】从资源服务器下载资源(二)
- [leetcode] 872. 叶子相似的树(周赛)
- DOM扩展-HTML5、专有扩展
- js实现视频时间段拖拽编辑
- des密钥java实现_java中以DES的方式实现对称加密并提供密钥的实例
- 190428每日一句
- java list 包含字符串_Java8实战:查找列表中包含的字符串
- 阿里云购买域名,以及域名备案(ICP备案)(网站备案)和公安备案(公安联网备案)
- 领航跟随型编队(十四)室内定位技术概述
- mgo 多条件联合查询
- 干货 | “深耕内容”背景下,携程如何做景酒优质内容的挖掘
- 程序员需知的 58 个网站,墙裂推荐!
- BART中文摘要生成,(nplcc与LCSTS数据集)
- 计算机应用方面中文学术论文写作详细总结
- 测试工具LoadRunner和OpenSTA比较分析
- iOS 文件预览(PDF、Excel、World等)之QuickLook框架
热门文章
- Android ListView反复调用getView和getCount
- gtk_widget_add_events为某个构件添加一个事件
- Hibernate关系映射和HQL
- 成功的MES项目,前期都做了些什么?
- 20.1 shell脚本介绍 20.2 shell脚本结构和执行 20.3 date命令用法 20.4 shell脚本中的变量...
- 数据存储之偏好设置NSUserDefaults
- Kafka的通讯协议
- sublime theme color
- 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例
- 速修复!这个严重的Zlib内存损坏漏洞已存在17年!