当前位置: 首页 > news >正文

先序+中序还原二叉树【数据结构】

先序+中序还原二叉树

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

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

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

输入样例1
9
ABDFGHIEC
FDHGIBEAC

输出样例1
5

#include<bits/stdc++.h>
using namespace std;
int high=0;
struct trees
{char value;trees* left=NULL;trees* right=NULL;
};
trees* setTree(int pl,int pr,int ml,int mr,map<char,int> &m,string prior,string middle,int height)
{//根节点char root=prior[pl];//根节点在中序遍历序列的位置int middleIndex=m[root];trees* tree = new trees;tree->value=root;if(middleIndex>ml) tree->left=setTree(pl+1,pl+middleIndex-ml,ml,middleIndex-1,m,prior,middle,height+1);if(middleIndex<mr) tree->right=setTree(pl+middleIndex-ml+1,pr,middleIndex+1,mr,m,prior,middle,height+1);high=max(high,height);return tree;
}
int main()
{int n;cin>>n;//记录字符在中序遍历序列位置map<char,int> m;string prior,middle;cin>>prior>>middle;for(int i=0;i<middle.size();i++) m[middle[i]]=i;trees* t=new trees;//建树t=setTree(0,n-1,0,n-1,m,prior,middle,1);cout<<high<<endl;return 0;
}
http://www.lryc.cn/news/269643.html

相关文章:

  • 【全网首发】洛谷P2678 [NOIP2015 提高组] 跳石头
  • Gpt指引ubuntu安装java8/11
  • 【MCAL】TC397+EB-tresos之MCU配置实战 - 芯片时钟
  • 最新AI系统ChatGPT网站H5系统源码,支持AI绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图
  • 如何在MAC OS中的XCODE下添加 <bits/stdc++.h>
  • Maven项目提示Ignored pom.xml问题
  • SQL学习汇总
  • 单片机MCU堆栈概念与区别
  • C#中使用is关键字检查对象是否与给定类型兼容
  • AI时代下,如何看待“算法利维坦”?
  • Linux上管理不同版本的 JDK
  • 直方图与均衡化
  • Java——猫猫图鉴微信小程序(前后端分离版)
  • PiflowX组件-ReadFromKafka
  • Ubuntu 安装MySQL以及基本使用
  • 基于Freeswitch实现的Volte网视频通知应用
  • 怎么实现Servlet的自动加载
  • 15. Mysql 变量的使用
  • 为什么ChatGPT采用SSE协议而不是Websocket?
  • Elasticsearch:使用 ELSER v2 文本扩展进行语义搜索
  • Matlab:BP神经网络算法,二叉决策树
  • Python实现员工管理系统(Django页面版 ) 七
  • 听GPT 讲Rust源代码--src/tools(34)
  • k8s的陈述式资源管理(命令行操作)
  • uniapp uview裁剪组件源码修改(u-avatar-cropper),裁出可自定义固定大小图片
  • 【机器学习前置知识】Beta分布
  • Notepad++批量更改文件编码格式及文档格式
  • Linux驱动开发学习笔记6《蜂鸣器实验》
  • 鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化
  • 毫米波雷达:从 3D 走向 4D