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

二叉树的先序,中序,后序遍历,深度计算 #include<stdio.h> #include<malloc.h> #include<iostream> using namespace std; typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //创建二叉树 BiTree CreatBiTree() { BiTree T; char c; ... 阅读详情

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

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

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

Input

输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。

Output

输出二叉树的深度。

Sample Input

2
dbgeafc
dgebfca
lnixu
linux

Sample Output

4
3

Hint

Source


注:因为懒惰,导致代码上有很多我自己做的别的题目,没有删除,如果看代码,主要是creat(),high(),main()这三个函数就行,当然代码直接提交是可以AC的。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{
    char data;
    struct node *left;
    struct node *right;
}tree;
char str1[100],str2[100];
tree *root,*link[54];


//str1为前序,str2为中序 求层序
tree *get_build(int len,char *str1,char *str2)
{
    if(len==0)
        return NULL;
    int i;
    tree *root;
    root=(tree *)malloc(sizeof(tree));
    root->data=str1[0];
    for(i=0;i<len;i++)
    {
        if(str2[i]==root->data)
            break;
    }
    root->left=get_build(i,str1+1,str2);
    root->right=get_build(len-i-1,str1+i+1,str2+i+1);
    return root;
}

int high(tree *root)//求二叉树的高度
{
    int n,m;
    if(root==NULL)
        return 0;
    else
    {
        n=high(root->left);
        m=high(root->right);
        if(n>m)
            return n+1;
        else
            return m+1;
    }
}


void ans(tree *root)//层序遍历序列
{
    if (root)
    {
        int i=0,j=0;
        link[j++]=root;
        while(i<j)
        {
            if(link[i])
            {
                link[j++]=link[i]->left;
                link[j++]=link[i]->right;
                printf("%c",link[i]->data);
            }
            i++;
        }
    }
}


void post(tree *root)//后序遍历序列
{
    if (root)
    {
        post(root->left);
        post(root->right);
        printf("%c",root->data);
    }

}

 //str1中序遍历 ,str2后序遍历 求先序遍历
tree *creat(int len,char *str1,char *str2)
{
    if(len==0)
        return NULL;
    int i;
    tree *root;
    root = (tree *)malloc(sizeof(tree));
    root->data=str2[len-1];
    //printf("%c",root->data);
    for(i=0; i<len; i++)
    {
        if(str1[i]==str2[len-1])
            break;
    }
    root->left =creat(i,str1,str2);
    root->right = creat(len-i-1,str1+i+1,str2+i);
    return root;
}




int main()
{
    int t,len;
    scanf("%d",&t);
    while(t--)
    {
        //memset(str1,0,sizeof(str1));
        //memset(str2,0,sizeof(str2));
        scanf("%s %s",str1,str2);
        len=strlen(str1);
        //root=get_build(t,str1,str2);
        //post(root);
        //printf("\n");
        //ans(root);
        //printf("\n");
        root=creat(len,str1,str2);
        printf("%d\n",high(root));
        //printf("\n");
    }

    return 0;
}

 

求二叉树的深度(后序遍历) C语言的, 数据结构的作业 求二叉树的深度(后序遍历) 立即下载

相关推荐

二叉树遍历算法 (递归的、非递归的中序、前序、后序遍历 和 层次遍历 以及 求二叉树的宽度和深度)

二叉树遍历算法 (递归的、非递归的中序、前序、后序遍历 和 层次遍历 以及 求二叉树的宽度和深度)

数据结构--二叉树的遍历--求二叉树的深度(后序遍历)

二叉树为空:深度为0; 二叉树为0:深度为1; 一般的二叉树:深度=max{左子树的深度,右子树的深度} + 1。 int Depth (BiTree T) { if (!T)//如果二叉树根节点为空,则深度为0 depthval=0; else {depthLeft = Depth(T->lchild); //左子树的深度 depthRight =

复兴之路 4813

高通跃龙QCS6490部署yolov11_obb实战:QNN SDK工具链全解析与避坑指南

本文详细解析了在高通跃龙QCS6490平台上部署yolov11_obb模型的实战过程,重点介绍了QNN SDK工具链的使用与优化技巧。从环境配置、模型转换到性能调优,提供了全面的避坑指南和DSP加速配置建议,帮助开发者高效实现旋转框检测任务在边缘设备上的部署。

weixin_29232121的博客 305

树的先序(后序)中序构建二叉树 和树遍历+求树的深度和高度

目录 1.树的先序(后序)中序构建二叉树 2.先序中序后序递归遍历树: 3.树的层次遍历 4.判断树的高度和深度: 5.树的销毁 1.树的先序(后序)中序构建二叉树 树的先序遍历: 根 左 右 树的中序遍历: 左 根 右 树的后序遍历 左 右 根 我们明确 只有先序中序或者后序中序能构建二叉树出来而先序和后序是构建不出来的 思路: 1.首先将先序中序的数字输入二个数组当中去 2.在中序遍历的数组中找到根节点记录下来,根节点 左边就是左子树,右节点就是右子...

weixin_56366633的博客 2379

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

离散数学期末考试试卷(两套)-熟悉题型

3.设集合A={a,b,c,d}上有自反关系R={,,,,},对称关系S={,,,}。6.设集合A={1,2,3},B={u,v,w},C={a,b,c},f是集合A到集合B上的映射,g是集合B到集合C上的映射,f={, , },g={},则复合函数g。5. 设集合A={a,b,c,d,e},下列选项中哪一个集合不是A的划分( )。

muse3159546973的博客 6956

二叉树的遍历及深度的计算

我们上一篇已经介绍了大量的二叉树知识,这下我们介绍一下其他的知识,接下来我们会了解到二叉树非递归后序遍历的简单版本,还有层序遍历,以及后面的二叉树的深度查找递归,非递归两种版本。这些都会帮助我们在以后的问题中解决很多的事的,所以接下来就要慢慢思考,它里面把好的整体思想。二叉树的根结点所在的层数为1,根结点的孩子结点所在的层数为2,以此下去。深度是指所有结点中最深的结点。

z3551906947的博客 3214

给麒麟KylinOS服务器加把锁:手把手配置符合等保要求的密码强度策略

本文详细介绍了如何在麒麟KylinOS服务器上配置符合等保要求的密码强度策略,包括pwquality.conf和login.defs的核心参数设置、等保合规的进阶配置技巧以及企业环境中的平衡艺术。通过实战案例和测试方法,帮助管理员构建坚固的密码防线,确保系统安全。

weixin_33749242的博客 419

104. 利用后序遍历(非递归)求二叉树的最大深度

利用后序遍历的非递归算法 后序遍历在出入栈是,是先将左孩子进栈,处理完毕后出栈,再将右孩子入栈,最后再处理根结点。所以在非递归的后序遍历过程中,栈的深度即为当前的深度。利用这个特性,我们可以编写出一下 ...

weixin_46864174的博客 1936

自动驾驶开发者必看:如何用Impromptu VLA数据集提升模型在乡村道路的表现(附实战代码)

本文为自动驾驶开发者提供了利用Impromptu VLA开源数据集提升模型在乡村道路等极端场景表现的实战指南。该数据集专门针对边界模糊道路、非常规障碍物等非结构化环境,通过精选的8万多个极端场景片段,帮助模型弥补数据分布偏差。文章详细介绍了环境搭建、数据准备、模型微调及性能评估的全流程,并附有实战代码,旨在系统性提升自动驾驶系统在长尾场景下的鲁棒性。

t8u9v0w1x的博客 243

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能。本篇文章主要介绍如何使用xlwings对Excel表格进行多行多列数据设置和操作,并给出相应的源代码。接着,我们可以对这个范围内的所有单元格进行操作,如设置字体颜色、填充颜色、对齐方式等。以上就是使用xlwings对Excel表格进行多行多列数据操作和设置字体颜色、填充色和对齐方式的全部内容。最后,我们可以将数据写入到单元格中,也可以从单元格中读取数据。在Excel中,可以通过。

BUG?不存在的! 712

SDUTOJ 2804 - 数据结构实验之二叉树八:(中序后序)求二叉树的深度

Problem Description 已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。 Input 输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。 Output 输出二叉树的深度。 Sample Input 2 dbgeafc dgebfca lnixu linux Sample Outpu...

sugerandmaster 249

FlexSim:FlexSim软件介绍与安装

在开始安装FlexSim之前,首先需要从FlexSim官方网站下载安装包。FlexSim提供不同版本的软件,包括教育版、专业版等,确保选择适合您需求的版本。下载页面通常会列出系统要求,包括操作系统、处理器、内存和硬盘空间,确保您的计算机满足这些要求。访问FlexSim官方网站。导航至下载页面。选择适合您需求的FlexSim版本。点击下载按钮,开始下载安装包。在开始构建模型之前,首先需要明确模型的目标。模型目标是指导模型设计和分析的核心,它定义了你希望通过模型解决的问题或探索的系统行为。

kkchenjj的博客 5803

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

数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit:1000 msMemory Limit:65536 KiB SubmitStatistic Problem Description 已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。 Input 输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树...

Move on 279

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

数据结构实验之二叉树八:(中序后序)求二叉树的深度#include<iostream> #include <malloc.h> #include<string.h> using namespace std; struct node { char data; struct node *rchild,*lchild; }tree; struct node *creat(char *a1

yue_luo_的博客 974

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

Description 已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。 Input 输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。 Output 输出二叉树的深度。 Sample Input 2 dbgeafc dgebfca lnixu linux Output 4 3 #include <stdio.h> #include <stdlib.h> #include <s

YuanBeyond01的博客 169

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。 Input 输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树...

Xiaojk的博客 275

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

#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; struct node { char data ; struct node *l,*r; }; struct node *creat(char *inorder,char *postorder,int len) { st...

Mercury_Lc的博客 785

SDUT-2804_数据结构实验之二叉树八:(中序后序)求二叉树的深度

数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。 Input 输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。 Ou...

weixin_34153893的博客 116

sdut oj2804 求二叉树的深度(根据中序以及后序遍历求树)

题目链接:点击打开链接 求二叉树的深度 Time Limit: 1000MS Memory limit: 65536K 题目描述 已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。 输入 输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。

Annfan123的博客 991

数据结构实验之二叉树七 、八 、二叉树的建立与遍历 、一 // oj3346 2804 2136

数据结构实验之二叉树七:叶子问题 // 先序–层序 叶子结点 #include <stdio.h> #include <stdlib.h> #include<string.h> char a[100]; int i; struct node { int data; struct node *l,*r; }; struct node *build() { struct node *st; if(a[i]!=',') {

Gverzh的博客 241

求二叉树深度 (sdut oj 2804)

根据中序和后序求二叉树深度

rain_snowing的博客 602
上一篇: 3343数据结构实验之二叉树四:(先序中序)还原二叉树
下一篇: 3341数据结构实验之二叉树二:遍历二叉树
RR-RR
博客等级 码龄10年 23粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值