数据结构实验之二叉树四:(先序中序)还原二叉树

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。

Input

输入数据有多组,每组数据第一行输入1个正整数N(1 <= N <= 50)为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。

Output

输出一个整数,即该二叉树的高度。

Sample Input

9

ABDFGHIEC

FDHGIBEAC

Sample Output

5

先序中序还原二叉树的方法转至根据先序、中序、后序遍历还原二叉树

题解:

根据先序中序我们可以确认他的左右子树的先序中序

A BDFGHIE C

FDHGIBE A C

还原左子树

BDFGHIE

FDHGIBE

推出

B DFGHI E

FDHGI B E

继续还原

D F GHI

F D HGI

再一次之后D的左子树还原完毕回溯至D还原右子树。、

G H I

H G I

再一次之后D的左右子树还原完毕,回溯至B,还原右子树,这样根节点的左子树还原完毕,右子树还原方式与左子树一致,这里不详述了。

还原之后

/*****************************************/
A
B C
D E
F G
H I
/****************************************/

可以看出最深为 A-B-D-G-H或A-B-D-G-I

#include <stdio.h>
#include <stdlib.h>
#include <string.h> typedef struct tree
{
char data;
struct tree *l,*r;
}tree; tree *newtree()
{
tree *t;
t = (tree*)malloc(sizeof(tree));
t->l = t->r = NULL;
return t;
} int h; tree *creat(char front[],char mid[],int n) //利用递归方法建树,n代表字符串的长度
{
if(n==0)
return NULL;
tree *t;
int i;
t = newtree();
t->data = front[0];
for(i=0;i<n;i++)
if(mid[i]==front[0])
break;
t->l = creat(front+1,mid,i);
t->r = creat(front+i+1,mid+i+1,n-i-1);
return t;
} void get_high(tree *t,int i) //统计二叉树的高度(深度),即看它最长的分支有多长
{
if(t)
{
if(h<i)
h = i;
get_high(t->l,i+1);
get_high(t->r,i+1);
}
} void show(tree *t)
{
if(t)
{
printf("%c",t->data);
show(t->l);
show(t->r);
}
} int main()
{
tree *t;
char front[55],mid[55];
int n;
while(scanf("%d",&n)!=EOF)
{
t = newtree();
scanf("%s%s",front,mid);
t = creat(front,mid,n);
h = 0;
get_high(t,1);
//show(t);
printf("%d\n",h);
}
return 0;
}

SDUT-3343_数据结构实验之二叉树四:(先序中序)还原二叉树的更多相关文章

  1. SDUT 3401 数据结构实验之排序四:寻找大富翁.!

    数据结构实验之排序四:寻找大富翁 Time Limit: 150MS Memory Limit: 512KB Submit Statistic Problem Description 2015胡润全球 ...

  2. SDUT OJ 数据结构实验之图论四:迷宫探索

    数据结构实验之图论四:迷宫探索 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  3. SDUT OJ 数据结构实验之排序四:寻找大富翁

    数据结构实验之排序四:寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Submit Statistic Discuss Problem Descripti ...

  4. SDUT OJ 数据结构实验之链表四:有序链表的归并

    数据结构实验之链表四:有序链表的归并 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Desc ...

  5. SDUT 3376 数据结构实验之查找四:二分查找

    数据结构实验之查找四:二分查找 Time Limit: 20MS Memory Limit: 65536KB Submit Statistic Problem Description 在一个给定的无重 ...

  6. SDUT 3361 数据结构实验之图论四:迷宫探索

    数据结构实验之图论四:迷宫探索 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 有一个地下迷 ...

  7. SDUT OJ 数据结构实验之二叉树四:(先序中序)还原二叉树

    数据结构实验之二叉树四:(先序中序)还原二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem ...

  8. SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度

    数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...

  9. SDUT-3376_数据结构实验之查找四:二分查找

    数据结构实验之查找四:二分查找 Time Limit: 30 ms Memory Limit: 65536 KiB Problem Description 在一个给定的无重复元素的递增序列里,查找与给 ...

随机推荐

  1. MAC+iTerm定制目录显示颜色和提示符

    知道该如何定制ls时各种类型文件(unix下所有的都是file..)的颜色了. 很简单,就是在.bash_profile下加了三行. export CLICOLOR=1 export LSCOLORS ...

  2. CoffeeScript 更优美的Javascript

    CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. CoffeeScript 尝试用简洁的方式展 ...

  3. SpringBoot集成lombook让代码更简洁

    1)添加lombok依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>l ...

  4. 深入浅析python中的多进程、多线程、协程

    深入浅析python中的多进程.多线程.协程 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源 ...

  5. Spring的IoC容器(转)BeanFactory

    Spring的IoC容器 Spring读书笔记-----Spring的Bean之Bean的基本概念 加菲猫 Just have a little faith. Spring的IoC容器 (用户持久化类 ...

  6. idea中HTML格式化时标签缩进问题

    在IntelliJ Idea中HTML格式化时,默认<head><body>以及<body>下的以及标签都不会缩进. 解决方法:editor->code st ...

  7. jQuery控制导航条样式

    原理:点击当前元素时,当前元素添加(样式类),父辈的兄弟姐妹的孩子('a')去掉此样式类. 代码如下: /*次要导航*/ $(".subnav li a").click(funct ...

  8. angular4 自定义表单组件

    自定义表单组件分为单值组件和多值组件. 单值组件:input/select/radio/textarea 多值组件:checkbox/tree组件 条件: 1.必须实现ControlValueAcce ...

  9. JQMObile 优势

    1.跨平台  目前大部分的移动设备浏览器都支持HTML5标准,jQuery Mobile以HTML5标记配置网页,所以可以跨不同的移动设备,如Apple iOS,Android,BlackBerry, ...

  10. 交互题(apio2016Gap)

    题目链接   //Serene #include<algorithm> #include<iostream> #include<cstring> #include& ...