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

求二叉树的先序序列

时间:2015-02-15 14:49:13      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

  根据序遍历的特点,我们可以知道,对任意一棵二叉树tree,其后序遍历(ch)的最后一个字符就是这课二叉树的根节点x,然后我们可以在其中序遍历(sh)中把x找出来(假设为第i个字符),显然中序遍历中x前面的字符串(copy(sh,1,i-1))是tree的左子树的中序遍历,x后面的字符串是tree的右子树的中序遍历,后序遍历中copy(ch,1,i-1)是tree的左子树的后序遍历,copy(ch,i,length(ch)-i)是tree的右子树的后序遍历,所以,我们就可以递归地构造出tree了。而题目只说求其前序遍历,所以我们只要按前序遍历的方式输出即可。还要注意范围!

var
s,c:string;
procedure pre(s,c:string);
var
i:longint;
x:char;
begin
  x:=c[length(c)];
  write(x);
  i:=pos(x,s);
  if i>1 then pre(copy(s,1,i-1),copy(c,1,i-1));
  if i<length(c) then 
    pre(copy(s,i+1,length(c)),copy(c,i,length(c)-i));
end;
begin
  readln(s); readln(c);
  pre(s,c);
end.

 

求二叉树的先序序列

标签:

原文地址:http://www.cnblogs.com/cxvdzxhb/p/4292795.html

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