首页 > 其他分享 >求二叉树的深度

求二叉树的深度

时间:2022-12-21 12:35:47浏览次数:36  
标签:lchild pre int tree 二叉树 深度 rchild


求二叉树的深度


Time Limit: 1000MS Memory limit: 65536K


题目描述


已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。


输入


T组数据。每组数据包括两个长度小于<font face="\"Times" new="" roman,="" serif\"="" style="padding: 0px; margin: 0px;">50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。


输出


输出二叉树的深度。


示例输入


2
dbgeafc
dgebfca
lnixu
linux


示例输出


4 3







#include<stdio.h>  
#include<stdlib.h>
#include<string.h>

typedef struct node
{
char data;
struct node *lchild; //左孩子指针
struct node *rchild; //右孩子指针
}tree;

tree *creat(char *pre,char *in,int len) //创建二叉树
{
tree *p;
if(len<=0) //返回上一层函数调用,
{
p=NULL;
}
else
{
p=(tree *)malloc(sizeof(tree)); //开辟新的内存空间
p->data=*(pre+len-1); //将pre[]的最后一个字符赋给p->data;
char *a;
for(a=in;a!=NULL;a++) //查找p->data在in[]字符串的位置
if(*a==*(pre+len-1))
{
break;
}
int l=a-in; //p->data在in[]字符串的位置
p->lchild=creat(pre,in,l);
p->rchild=creat(pre+l,a+1,len-l-1);
}
return p;
}

int deep(tree *t)
{
if(!t)
return 0;
int lchild,rchild;
lchild=deep(t->lchild);
rchild=deep(t->rchild);
return lchild>rchild?lchild+1:rchild+1;
}

int main()
{
int t;
scanf("%d",&t);
tree *T;
while(t--)
{
char str1[55],str2[55];
scanf("%s%s",str1,str2);
int l=strlen(str1);
T=creat(str2,str1,l);
printf("%d\n",deep(T));
}
}

标签:lchild,pre,int,tree,二叉树,深度,rchild
From: https://blog.51cto.com/u_12606187/5959794

相关文章

  • 数据结构实验之求二叉树后序遍历和层次遍历
    数据结构实验之求二叉树后序遍历和层次遍历TimeLimit:1000MSMemorylimit:65536K题目描述 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历。输入......
  • [js] 树结构查找节点,深度优先
    查找节点其实就是一个遍历的过程,遍历到满足条件的节点则返回,遍历完成未找到则返回null。类似数组的find方法,传入一个函数用于判断节点是否符合条件,代码如下:functiontreeFin......
  • 深度生成模型
    邱锡鹏NNDL学习笔记首先应明白什么是生成模型。了解生成模型的两个模块:(概率)密度估计,生成样本(采样)。在密度估计或生成样本的时候,采用神经网络的方法,就是深度生成模型。......
  • 数智管理新动能,深度解读《2022中国指标中台市场研究报告》
    在经济增速放缓的大背景下,激烈的市场竞争,多变的消费需求以及日新月异的技术创新为企业带来高风险的生存环境,疫情的爆发又使企业的生存空间进一步恶化。企业的未来充满不确定......
  • PyTorch 深度学习实践第一讲
    写在前面:B站刘二大人 传送门​​Pytorch深度学习实践第一讲​​预备知识线性代数和概率论与数理统计(至少知道分布)Python(了解面向对象、类)引言:HumanIntelligence推理能力......
  • 数据结构-二叉树遍历非递归
    前序遍历voidpreorder(BTNODEBT){BTNODESTACK[100];inttop=-1;STACK[++top]=BT;BTNODEp=null;while(top!=-1){BTNO......
  • 深度学习炼丹-数据处理和增强
    前言一,Normalization概述1.1,Normalization定义1.2,什么情况需要Normalization1.3,DataNormalization方法1.4,示例代码二,normalizeimages2.1,图像normalizat......
  • ubuntu16.04+七彩虹GTX1060的NVIDIA驱动+Cuda8.0+cudnn5.1+tensorflow+keras搭建深度
    平台信息:PC:ubuntu16.04、i5、七彩虹GTX1060显卡作者:庄泽彬(欢迎转载,请注明作者)说明:参考了网上的一堆的资料搭建了深度学习的开发环境,下班在宿舍折腾了好几个晚上才搞定,写......
  • ubuntu18.04下搭建深度学习环境anaconda2+ cuda9.0+cudnn7.0.5+tensorflow1.7【原创】
    PC:ubuntu18.04、i5、七彩虹GTX1060显卡、固态硬盘、机械硬盘作者:庄泽彬(欢迎转载,请注明作者)说明:记录在ubuntu18.04环境下搭建深度学习的环境,之前安装了cuda9.1,与cudnn7.0......
  • [深度学习] tf.keras入门4-过拟合和欠拟合
    过拟合和欠拟合简单来说过拟合就是模型训练集精度高,测试集训练精度低;欠拟合则是模型训练集和测试集训练精度都低。官方文档地址为https://tensorflow.google.cn/tutoria......