您的位置:首页 > 理论基础 > 数据结构算法

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

2018-11-15 20:43 337 查看

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

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

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

Input

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

 

Output

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

Sample Input

[code]9
ABDFGHIEC
FDHGIBEAC

Sample Output

[code]5

Hint

Source

xam

[code]#include <bits/stdc++.h>

using namespace std;

struct bitree
{
char data;
struct bitree *lc;
struct bitree *rc;
};
bitree *create(int n,char a[],char b[])
{
bitree *tree;
char *p;
if(!n)
tree = NULL;
else
{
tree = new bitree;
tree->data = a[0];
for(p=b; p!='\0'; p++)
{
if(*p==a[0])
break;
}
int t;
t = p-b;
tree->lc = create(t,a+1,b);
tree->rc = create(n-1-t,a+t+1,p+1);
}
return tree;
}
int depth(bitree *tree)
{
int d = 0;
if(tree)
{
int ld = depth(tree->lc);
int rd = depth(tree->rc);
d = ld>rd?ld+1:rd+1;
}
return d;
}
int main()
{
int n;
char a[51],b[51];
while(cin>>n)
{
bitree *tree;
cin>>a>>b;
tree = create(n,a,b);
cout<<depth(tree)<<endl;
}
return 0;
}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: