洛谷P1030c++递归求解先序排列
时间:2019-09-16
本文章向大家介绍洛谷P1030c++递归求解先序排列,主要包括洛谷P1030c++递归求解先序排列使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
P1030 求先序排列 - 洛谷 | 计算机科学教育新生态
https://www.luogu.org/problem/P1030
输入 #1
BADC BDCA
输出 #1
ABCD
题目如上,对于这道题,我们可以利用树的递归性质来求解
已知后序序列和中序序列,我们可以逐次找根,输出根节点的值,再对左右子树分别来一波,就得到后序遍历的序列啦
比如样例数据 中序序列BADC 后序序列BDCA
后序序列的最后一个字符'A'就是这段序列里的根,接着在中序序列中找到'A'
那么B就是遍历左子树的中序序列,DC就是遍历右子树的中序序列了
由此我们也得到了左右子树的结点个数和各自的后序序列,就可以再对俩子树来一波,就可以了
核心代码如下:
void go(string a,string b)//a是后序遍历序列,b是中序遍历序列 { int lenl,lenr,len; len=a.length(); for(int i=0;i<len;i++) if(a[len-1]==b[i]) { lenl=i; cout<<a[len-1];//输出根节点的值 lenr=len-1-lenl; if(lenl!=0) { string part1(a,0,lenl),part2(b,0,lenl); go(part1,part2); } if(lenr!=0) { string part1(a,lenl,lenr),part2(b,lenl+1,lenr); go(part1,part2); } } }
string part(a,0,lenl)表示复制字符串a的a[0]到a[0+lenl-1]到part,也就是从0开始数lenl个
原文地址:https://www.cnblogs.com/Neptune0/p/11529030.html
- HDUOJ----The Number Off of FFF
- HDUOJ-------Naive and Silly Muggles
- HDUOJ----A Computer Graphics Problem
- HDUOJ---(4708)Herding
- HDUOJ---(4708)Rotation Lock Puzzle
- HDUOJ---Hamming Distance(4712)
- HDUOJ-----Difference Between Primes
- HDUOJ----(4706)Children's Day
- poj-------Common Subsequence(poj 1458)
- poj----Maximum sum(poj 2479)
- HDUOJ---hello Kiki
- HDUOJ-----X问题
- POJ-----C Looooops
- POJ--Strange Way to Express Integers
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python自学成才之路 文件读写操作
- go 中string[0]到底是rune还是byte?
- python自学成才之路 类详细用法
- Linux 监控之 IO
- python自学成才之路 函数详细用法
- 你所不知道的TIME_WAIT和CLOSE_WAIT
- linux之网络
- linux vim编辑器之常用指令
- saltstack手册(含官方pdf)
- 详解Go变量类型的内存布局
- linux vim 编辑器之多文件多窗口编辑
- 深入解析 Go 中 Slice 底层实现
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)
- linux文件时间属性 查看和修改文件时间
- Linux硬连接和软连接详解