二叉树遍历

原创 2013年12月01日 20:15:52

二叉树遍历

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 5   Accepted Submission(s) : 4

Font: Times New Roman | Verdana | Georgia

Font Size:  

Problem Description

树和二叉树基本上都有先序、中序、后序,层序遍历等遍历顺序,给定中序和其他一种遍历的序列就可以确定一棵二叉树的结构。假定一棵二叉树一个结点用一个字符描述,现在给出中序和层序遍历的字符串,求该树的先序遍历字符串。

Input

输入有多组数据,对于输入每组数据有两行,每行是由字母组成的字符串(一行的每个字符都是唯一的,长度不超过20),分别表示二叉树的中序遍历和层序遍历的序列。

Output

对于每组输入输出二叉树的先序序列。

Sample Input

DBEAC
ABCDE

Sample Output

ABDEC

/*方法类似于已知先序和中序求后序*/
#include <stdio.h>
#include <string.h>
char m1[35],m2[35];
int dp[35];
int len;
void tree(int l,int r)
{
    if(l>r)
        return ;
        int f=0x7fffff,place;
    for(int i=l;i<=r;i++)
    {
        if(dp[m1[i]]<f)  //找出序列中最小的字符便是根节点
        {
            f=dp[m1[i]];
            place=i;
        }
    }
    putchar(m1[place]);
    tree(l,place-1);
    tree(place+1,r);
}
int main ()
{
    while(scanf("%s%s",m1,m2)!=EOF)
    {
       int len=strlen(m2);
       for(int i=0;i<len;i++)
        dp[m2[i]]=i;  //对m2中的字符标记以便在递归中找出
       tree(0,len-1);
       printf("\n");
    }
    return 0;
}


【华为练习题】二叉树遍历

【华为练习题】二叉树遍历题目二叉树遍历 描述: 二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其...
  • sps900608
  • sps900608
  • 2016年09月13日 23:28
  • 614

二叉树遍历解析

1 / \ 2 3 / \ / \ 4 5 6 ...
  • u014805066
  • u014805066
  • 2016年01月30日 13:58
  • 437

C++实现二叉树遍历

二叉树节点图: 简述: 分别使用前序遍历(LNR)、中序遍历(NLR)、后续遍历(LRN)实现数据输出 代码及实现: /***********************二叉树遍历...
  • anialy
  • anialy
  • 2012年06月03日 01:57
  • 9844

【每日算法】二叉树的遍历

二叉树特点 每个节点最多有两棵子树; 二叉树是有序的,即区分左右子树的次序。 完全二叉树 叶子节点只能出现在最下两层,且最下层的叶子节点都集中在二叉树左侧连续的位置。 如果有度为1的节点,...
  • jiange_zh
  • jiange_zh
  • 2016年02月25日 00:17
  • 1868

二叉树的三种遍历练习题

一 二叉树的基础问题
  • XSF50717
  • XSF50717
  • 2014年10月11日 20:10
  • 5776

用java代码实现二叉树的遍历算法

二叉树的遍历可以采用递归算法来实现,遍历方式有三种:先序遍历,中序遍历,后序遍历。    下面是一个例子:                      public   class   BinTre...
  • qq_27692191
  • qq_27692191
  • 2016年02月25日 20:27
  • 452

二叉树遍历的的例子

二叉树遍历代码二叉树三种遍历小例子:#include #include struct BTNode * CreateBTree(void); void PreTraverseBTree(struct...
  • Dean_Deng
  • Dean_Deng
  • 2015年08月23日 11:39
  • 1139

二叉树遍历c++实现

//自己还真是个菜鸡,大一学了一年c++,现在还在基础的语法上转圈,还没有意识到c++真正的 //的强大之处在于它的多变,封装,等算法告一段落了在考虑是往Java上走还是深造c++ #include ...
  • weixin_36346676
  • weixin_36346676
  • 2016年10月28日 17:30
  • 205

PHP实现二叉树遍历(非递归方式,栈模拟实现)

二叉树定义是这样的:一棵非空的二叉树由根结点及左、右子树这三个基本部分组成,根据节点的访问位置不同有三种遍历方式: ① NLR:前序遍历(PreorderTraversal亦称(先序遍历)) ...
  • u013474436
  • u013474436
  • 2016年02月18日 16:37
  • 525

二叉树遍历的递归、非递归算法(Java实现)

二叉树先序遍历、中序遍历、后序遍历的递归以及非递归算法(Java实现)
  • apandi_
  • apandi_
  • 2016年10月24日 22:35
  • 1862
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树遍历
举报原因:
原因补充:

(最多只允许输入30个字)