标签:
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度≤8)。
第一行为二叉树的中序序列
第二行为二叉树的后序序列
一行,为二叉树的先序序列
BADC
BDCA
output:
ABCD
#include <cstdio> #include <cstring> using namespace std; const int MAXN=10; char in_order[MAXN]; char post_order[MAXN]; char pre_order[MAXN]; void build(int l1,int r1,int l2,int r2) { if(l1>r1) return ; char root=post_order[r2]; int p=l1; while(in_order[p]!=root) p++; printf("%c",root); int cnt=p-l1; build(l1,p-1,l2,l2+cnt-1);//左子树 build(p+1,r1,l2+cnt,r2-1);//右子树 } int main() { scanf("%s",in_order); scanf("%s",post_order); int len=strlen(in_order); build(0,len-1,0,len-1); return 0; }
标签:
原文地址:http://www.cnblogs.com/program-ccc/p/5394744.html