【HBU数据结构月考】7-2 还原二叉树 (30 分) 输出高度

2023-12-04 18:48

本文主要是介绍【HBU数据结构月考】7-2 还原二叉树 (30 分) 输出高度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

7-2 还原二叉树 (30 分)

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

输入格式:

输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。

输出格式:

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

输入样例:

9
ABDFGHIEC
FDHGIBEAC

输出样例:

5

 输出高度,两个函数一个生成树,一个判断树的深度。就行了

函数1:生成树

申请内存,然后存数据,递归连成树。

背下来,背下来,背下来!!!!

Tree* creat(int root,int beg ,int len){
    Tree * T;
    int i;
    if(len<=0) T=NULL;
    else{
        T=(struct Tree*)malloc(sizeof(Tree));
        T->data=v1[root];
    for(i=0;v1[root]!=v2[beg+i];i++);
    T->left=creat(root+1,beg,i);
    T->right=creat(root+i+1,beg+i+1,len-i-1);
    }return T;
}

函数2:判断树的深度

递归去求深度。背下来,背下来,背下来!!!!!!

int getHight(Tree* T){
    if(T){
        int m=getHight(T->left);
        int n=getHight(T->right);
        if(m<n)return n+1;
        return m+1;
    }return 0;
}

#include<iostream>
using namespace std;
struct Tree{char data;struct Tree *left,*right;
};
char v1[100000];
char v2[100000];
Tree* creat(int root,int beg ,int len){Tree * T;int i;if(len<=0) T=NULL;else{T=(struct Tree*)malloc(sizeof(Tree));T->data=v1[root];for(i=0;v1[root]!=v2[beg+i];i++);T->left=creat(root+1,beg,i);T->right=creat(root+i+1,beg+i+1,len-i-1);}return T;
}
int getHight(Tree* T){if(T){int m=getHight(T->left);int n=getHight(T->right);if(m<n)return n+1;return m+1;}return 0;
}
int main(){int n;cin>>n;for(int i=0;i<n;i++)cin>>v1[i];for(int i=0;i<n;i++)cin>>v2[i];Tree * T=creat(0,0,n);cout<<getHight(T);return 0;
}

 

这篇关于【HBU数据结构月考】7-2 还原二叉树 (30 分) 输出高度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/454531

相关文章

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d