码迷,mamicode.com
首页 > 其他好文 > 详细

2001求先序排列

时间:2016-09-16 16:57:15      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

题目描述 Description

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

输入描述 Input Description

两个字符串,分别是中序和后序(每行一个)

输出描述 Output Description

一个字符串,先序

样例输入 Sample Input

BADC

BDCA

样例输出 Sample Output

ABCD

数据范围及提示 Data Size & Hint
 
 
 
 

题解:

树形搜索。

用后序遍历确定根节点,中序遍历确定左右子树。

var s1,s2,s:ansistring;

procedure dfs(l1,r1,l2,r2:longint);

var i:longint;

 begin

  if l1=r1 then

   begin

    write(s1[l1]);

    exit;

   end;

  write(s2[r2]);

  i:=pos(s2[r2],s1);

  if i-1>=l1 then dfs(l1,i-1,l2,l2+i-l1-1);

  if r1>=i+1 then dfs(i+1,r1,l2+i-l1,r2-1);

 end;

begin

 readln(s1);

 readln(s2);

 dfs(1,length(s1),1,length(s2));

end.

2001求先序排列

标签:

原文地址:http://www.cnblogs.com/huzhaoyang/p/5876523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!