@Moritz
2019-03-29T08:19:09.000000Z
字数 705
阅读 539
洛谷 树 C++ 所有文稿
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度\le 8≤8)。
输入格式:
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:
1行,表示一棵二叉树的先序。
输入样例#1:
BADCBDCA
输出样例#1:
ABCD
普通的先序遍历如下
void (int node){cout<<i;if (tree[i].left>0) xianxu(tree[i].left);if (tree[i].r>0) xianxu(tree[i].r);return;}
在此基础上,加多一个根据中序和后序找出该节点的“代码块”即可
#include <iostream>#include <string>using namespace std;string m,l;void xian(char i,int in,int ml,int mr,int ll,int lr){cout<<i;/*left*/if(in>ml) xian(l[lr-(mr-in)-1],m.find(l[lr-(mr-in)-1]),ml,in-1,ll,lr-(mr-in)-1);/*right*/if(in<mr) xian(l[lr-1],m.find(l[lr-1]),in+1,mr,lr-(mr-in)-1,lr-1);}int main(){cin>>m>>l;xian(l[l.length()-1],m.find(l[l.length()-1]),0,m.length()-1,0,l.length()-1);return 0;}
2019.3.26
