找人做网站需要什么条件,上海有多少家网站建设公司,唐山企业建网站,运行两个wordpress题目描述 已知一颗二叉树的中序遍历序列和后序遍历序列#xff0c;求二叉树的深度。 输入 输入数据有多组#xff0c;输入T组数据。每组数据包括两个长度小于font face\Times new roman, serif\ style求二叉树的深度。 输入 输入数据有多组输入T组数据。每组数据包括两个长度小于font face\Times new roman, serif\ stylepadding: 0px; margin: 0px;50的字符串第一个字符串表示二叉树的中序遍历第二个表示二叉树的后序遍历。 输出 输出二叉树的深度。示例输入 2
dbgeafc
dgebfca
lnixu
linux 示例输出 4
#includestdio.h
#includestring.h
#includestdlib.h
typedef char telemtype;
typedef char status;
typedef struct BiTNode
{
telemtype data;
struct BiTNode *lchild,*rchild;
}*BiTree;
void BinaryTree(BiTree T,char aft[],char mid[],int fs,int ms,int length)
//fs:后序序列起始位置ms中序序列起始位置
{
if(length0) TNULL;//树后序序列的深度为0则树空
else
{
int k0;
int nstrlen(mid);
for(k0;kn;k)//找到根节点在中序序列中的位置用以划分左右子树
{
if(mid[k]aft[fslength-1])//后序序列最后一个节点是根节点
break;
}
Tnew BiTNode;
if(!T) exit(0);
T-dataaft[fslength-1];//根节点的赋值
if(kms) T-lchildNULL;//若仅有一个元素则此结点左子树为空
else BinaryTree(T-lchild,aft,mid,fs,ms,k-ms);
if(kmslength-1) T-rchildNULL;//若仅有一个元素则此结点右子树为空
else BinaryTree(T-rchild,aft,mid,fsk-ms,k1,length-(k-ms)-1);
}
}
int depth(BiTree T)//树的深度函数
{
int lth,rth;
if(!T) return 0;
else
{
lthdepth(T-lchild);
rthdepth(T-rchild);
if(lthrth)
return lth1;
else
return rth1;
}
}
int main()
{
char aft[55],mid[55];
int n;
BiTree T;
scanf(%d,n);
while(n--)
{
scanf(%s\n%s,mid,aft);
int lengthstrlen(aft);
BinaryTree(T,aft,mid,0,0,length);//由后序序列和中序序列求前序序列
printf(%d\n,depth(T));
}
}