| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 293 人关注过本帖
标题:大家帮忙看看这道遍历问题
只看楼主 加入收藏
hsmiaomiao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-4-12
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
大家帮忙看看这道遍历问题
【问题描述】已知一棵二叉树的先序和中序遍历,可以求它的后序遍历,相应的,已知一棵二叉树的后序和中序遍历,也能求它的先序遍历。然而给定一棵二叉树的先序和后序遍历,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树:
        a             a                 a                         a
     b            b                          b                        b
 c                    c                 c                                  c
所有的这些二叉树都有着相同的先序和后续遍历,但中序遍历却不相同。
【输入】输入数据共两行,第一行表示该二叉树的先序遍历结果s1,第二行表示该二叉树的后续遍历结果s2。
【输出】输出可能的中序遍历序列的总数,结果不超过长整型数。
【样例】
      travel.in
      abc
      bca

      travel.out
      4

相应的PASCAL语言代码如下:
program E2_3;{Travel}
var s1,s2:string;  {存放原始输入的先序遍历和后续遍历结果}
procedure init;    {初始化,读入两个字符串}
begin
  assign(input,'tranel.in');reset(input);
  readln(s1);readln(s2);close(input);
end;
Function check(f,l:string):boolean;
var i:byte;
begin
  if lenght(f)=0 then check:=true  {空字符串也认为符合条件}
  else
    begin
      check:=true;
      check:=f[l]=l[lenght(l)];  {对比F的首字符和L的尾字符}
      for i:=2 to lenght(f) do   {检查其他字符在F中有的L中也是否有}
      if pos(f[i],l)=0 then check:=false;
    end;
end;
Function count(first,last:string):longint;
var i,len:byte; t:longint
    lf,ll,rf,rl:string;
begin
  if len<=1 then count:=1  {只有1个或0个字符时返回结果1}
     else
       begin
         len:=lenght(last); t:=0;
         for i:=len-1 downto 0 do
           begin
             lf:=copy(first,2,i);  {取先序的左子串}
             ll:=copy(last,l,i);   {取后序的左子串}
             rf:=copy(first,i+2,len-l-i);  {取先序的右子串}
             rl:=copy(last,i+1,len-l-i);   {取后序的右子串}
             if check(lf,ll) and check(rf,rl) then
             t:=t+count(lf,ll)*count(rf,rl);  {递归调用;分布相乘;分类相加}
           end;
       count:=t;
      end;
end;
begin  {main}
  init;
  assign(output,'travel.out');rewrite(output);
  writeln(count(s1,s2));close(output)
end.

能不能把这个代码翻译成C语言代码,谢谢啦。
搜索更多相关主题的帖子: 二叉树 
2011-04-12 21:33
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:10 
懂原理就行,树形结构比较麻烦点

我的地盘
2011-04-12 22:16
hsmiaomiao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-4-12
收藏
得分:0 
回复 楼主 hsmiaomiao
木有啊

[ 本帖最后由 hsmiaomiao 于 2011-4-13 14:09 编辑 ]
2011-04-13 14:08
hsmiaomiao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-4-12
收藏
得分:0 
回复 2楼 hnuhsg1226
就是,我对C语言比较犯怵
2011-04-13 14:09
快速回复:大家帮忙看看这道遍历问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016664 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved