给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。
输入格式:
输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。
输出格式:
输出为一个整数,即该二叉树的高度。
输入样例:
9
ABDFGHIEC
FDHGIBEAC
输出样例:
5
【代码】
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int n;
char pre[60], in[60];
struct TNode
{
int Data;
struct TNode* Left;
struct TNode* Right;
};//二叉树的结构体
typedef struct TNode* Tree;
Tree restoreTree(char pre[], char in[], int n)
{
//还原二叉树的函数
int i;
char lpre[60], rpre[60];
char lin[60], rin[60];
int n1 = 0, n2 = 0;//n1记录前序遍历序列的左子树长度,n2则记录前序遍历序列的右子树长度
int m1 = 0, m2 = 0;//m1记录中序遍历序列的左子树长度,m2记录中序遍历序列右子树长度
if (n == 0)
{
//如果长度为零说明这可子树建完了返回NULL
return NULL;
}
Tree T = (Tre