P1030 求先序排列
2018-02-02 10:04
197 查看
题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入输出格式
输入格式:
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:
1行,表示一棵二叉树的先序。
输入输出样例
输入样例#1:
BADC
BDCA
输出样例#1:
ABCD
记住几个二叉树性质:
后序遍历:最后一个一定是根
先序遍历:第一个一定是根
中序遍历:根在中间,可以一刀两断,且为二叉搜索树的遍历方式
这题的话,每次取后序遍历的最后一个输出(根),然后在中序遍历中找到其位置,一刀两断将树劈成两份,继续递归。
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入输出格式
输入格式:
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:
1行,表示一棵二叉树的先序。
输入输出样例
输入样例#1:
BADC
BDCA
输出样例#1:
ABCD
记住几个二叉树性质:
后序遍历:最后一个一定是根
先序遍历:第一个一定是根
中序遍历:根在中间,可以一刀两断,且为二叉搜索树的遍历方式
这题的话,每次取后序遍历的最后一个输出(根),然后在中序遍历中找到其位置,一刀两断将树劈成两份,继续递归。
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define inf 99999999 string in,after; void dg(string in,string after) { int len=in.size(); if(len<=0)return; char ch=after[len-1]; cout<<ch; int k=in.find(ch); dg(in.substr(0,k),after.substr(0,k)); dg(in.substr(k+1),after.substr(k,len-1-k)); } int main() { cin>>in>>after; dg(in,after); return 0; }
相关文章推荐
- 【树形结构】洛谷 P1030 求先序排列
- 洛谷——P1030 求先序排列
- P1030 求先序排列
- 洛谷P1030 求先序排列
- P1030 求先序排列
- 洛谷 P1030 求先序排列
- 洛谷P1030 求先序排列
- 洛谷 P1030 求先序排列
- 洛谷 P1030 求先序排列
- 洛谷OJ - P1030 求先序排列(先序遍历)
- 洛谷P1030 求先序排列
- 利用 Case 敘述做 SQL 的動態排列
- c#实现直角排列的99乘法表
- 排列序号
- 《星球大战》按剧情先后的排列顺序,另注对老美电影与中国电影的两点看法。
- 字典序输出全排列
- 字符串的排列--字典序生成、回溯
- Google工程师详述Google的搜索结果排列算法 (ZT)
- 用递归的思想写编写一个函数reverse_string(char * string)实现字符串反向输出和反向排列
- mysql 获取排列序号