AcWing 1260:二叉树输出

【题目来源】
https://www.acwing.com/problem/content/1262/

【题目描述】
树的
凹入表示法主要用于树的屏幕或打印输出,其表示的基本思想是兄弟间等长,一个结点的长度要不小于其子结点的长度。
二叉树也可以这样表示,假设叶结点的长度为 1,一个非叶结点的长度等于它的左右子树的长度之和。
一棵二叉树的一个结点用一个字母表示(无重复),输出时从根结点开始:
每行输出若干个结点字符(相同字符的个数等于该结点长度),
如果该结点有左子树就递归输出左子树;
如果该结点有右子树就递归输出右子树。
假定一棵二叉树一个结点用一个字符描述,现在给出
先序中序遍历的字符串,用树的凹入表示法输出该二叉树。

【输入格式】
两行,每行是由大写字母组成的字符串(一行的每个字符都是唯一的),分别表示二叉树的先序遍历和中序遍历的序列。

【输出格式】
行数等于该树的结点数,每行的字母相同。

【数据范围】
输入字符串的长度均不超过26。

【输入样例】
ABCDEFG
CBDAFEG

【输出样例】
AAAA
BB
C
D
EE
F
G

【算法分析】
利用下图中的中序、后序遍历示意图,计算x、y值的过程,可
参考确立下文代码中的参数。其中:
ile:中序遍历左端点位置,iri:中序遍历右端点位置
ple:后序遍历左端点位置,pri:后序遍历右端点位置


【算法代码】

#include <bits/stdc++.h>
using namespace std;string pre,in;
int a[30];int dfs(int l1, int r1, int l2, int r2) { //preorder & inorderif(l1==r1) {a[l1]=1;return a[l1];}int k=in.find(pre[l1]);if(k>l2) a[l1]+=dfs(l1+1,l1+k-l2,l2,k-1);if(k<r2) a[l1]+=dfs(l1+k-l2+1,r1,k+1,r2);return a[l1];
}int main() {    cin>>pre>>in;dfs(0,pre.size()-1,0,in.size()-1);for(int i=0; i<pre.size(); i++) {for(int j=0; j<a[i]; j++)cout<<pre[i];cout<<endl;}return 0;
}/*
in:
ABCDEFG
CBDAFEGout:
AAAA
BB
C
D
EE
F
G
*/





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/119108633
https://www.acwing.com/solution/content/184637/










 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP_MM模块-特殊业务场景下的系统实现方案

一、业务背景 目前公司有一种电商业务&#xff0c;卖的是备品配件&#xff0c;是公司先跟供应商采购&#xff0c;然后再销售给客户&#xff0c;系统账就是按照正常业务来流转&#xff0c;公司进行采购订单入库&#xff0c;然后销售订单出库。 不过这种备品配件&#xff0c;实…

【图论】树论

经典例子如下&#xff1a; lca 树上差分 树的重心 树的直径 树的中心 树链剖分 最近公共祖先 P3379 【模板】最近公共祖先&#xff08;LCA&#xff09; - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 简单模板&#xff0c;过了无数遍 P3128 [USACO15DEC] Max Flow P - 洛…

STM32-I2C

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. I2C通信1.1 I2C通信简介1.2 硬件电路1.3 I2C时序基本单元1.3.1 起始条件和终止条件1.3.2 发送一个字节1.3.3 接收一个字节1.3.4 发送应答和接收应答 1.4 I2C时序1.4.1 指定地址写1.4.2 当前地址读1.4.3 指定地址读…

Python实战训练(方程与拟合曲线)

1.方程 求e^x-派&#xff08;3.14&#xff09;的解 用二分法来求解&#xff0c;先简单算出解所在的区间&#xff0c;然后用迭代法求逼近解&#xff0c;一般不能得到精准的解&#xff0c;所以设置一个能满足自己进度的标准来判断解是否满足 这里打印出解x0是因为在递归过程中…

什么是PPG(光电容积描记)传感器?

PPG&#xff08;光电容积描记&#xff09;传感器是一种用于测量血液容量变化的设备。PPG传感器利用光学技术&#xff0c;通过检测皮肤下血液的反射光量变化来获取心率、血氧饱和度和其他生理参数。以下是PPG传感器的工作原理和应用&#xff1a;

python语句性能分析

1、for语句性能优于while import timeif __name__ __main__:start_time time.time()for i in range(10 ** 8):passend_time time.time()run_time end_time - start_timeprint(run_time)i 0start_time time.time()while i < 10 ** 8:i 1end_time time.time()run_tim…

强化学习的数学原理:时序差分算法

概述 之前第五次课时学习的 蒙特卡洛 的方法是全课程当中第一次介绍的第一种 model-free 的方法&#xff0c;而本次课的 Temporal-Difference Learning 简称 TD learning &#xff08;时序差分算法&#xff09;就是第二种 model-free 的方法。而对于 蒙特卡洛方法其是一种 non…

IntelliJ IDEA 同时多行同时编辑操作快捷键

首先 点击要编辑的地方,长按鼠标左键不放,同时按住 Ctrl Shift Alt,然后就可以进行多行编辑了

Android项目中,查看项目依赖树的多种方式

1.使用预设的Task来进行查看 1.1 命令行 查看某个模块的所有依赖树&#xff1a; gradlew [模块名称]:dependencies 例如&#xff1a;gradlew app:dependencies查看某个模块的某功能的依赖树&#xff1a; gradlew [模块名称]:dependencies --configuration [功能名称] 例如&…

k8s学习之cobra命令库学习

1.前言 打开k8s代码的时候&#xff0c;我发现基本上那几个核心服务都是使用cobra库作为命令行处理的能力。因此&#xff0c;为了对代码之后的代码学习的有比较深入的理解&#xff0c;因此先基于这个库写个demo&#xff0c;加深对这个库的一些理解吧 2.cobra库的基本简介 Git…

Spring Boot中的微服务通信方式

Spring Boot中的微服务通信方式 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨在Spring Boot中实现微服务通信的多种方式。 一、什么是微服务通…

前端JS特效第22波:jQuery滑动手风琴内容切换特效

jQuery滑动手风琴内容切换特效&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xm…

flutter开发实战-解决release下Error: SocketException: Failed host lookup问题

flutter开发实战-解决release下Error: SocketException: Failed host lookup问题 当在开发App过程中&#xff0c;在Debug下接口访问正常&#xff0c;但是通过flutter build apk lib/main.dart --release打包后安装&#xff0c;发现Android手机上无法请求数据&#xff0c;报Err…

linux RTC时钟时间出现了明显的偏移

RTC时钟时间出现了明显的偏移 1、开发环境2、问题阐述3、验证问题3.1、首先去排查了硬件电路和芯片电压不稳定的问题。3.2、晶振的问题。3.3、芯片本身3.4、芯片寄存器 4、代码修改 1、开发环境 平台&#xff1a;imx6ul kernel版本&#xff1a;linux4.1.5 RTC芯片&#xff1a;…

机械键盘有哪些分类

机械键盘是一种比传统的薄膜键盘更耐用、更快捷、更具有手感的键盘。它的键帽和按键是独立的&#xff0c;能够提供更好的反应速度和操作感。机械键盘在现代化生活中得到了广泛的应用。根据其特性和使用场景&#xff0c;机械键盘可以分为以下几类&#xff1a; 1.轴体分类 机械…

使用Java实现异步消息处理与队列消费

使用Java实现异步消息处理与队列消费 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代软件系统中&#xff0c;处理异步消息和队列消费是常见的需求。通过…

设计模式探索:建造者模式

1. 什么是建造者模式 建造者模式 (Builder Pattern)&#xff0c;也被称为生成器模式&#xff0c;是一种创建型设计模式。 定义&#xff1a;将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 建造者模式要解决的问题&#xff1a; 建造者模…

誉天教育7月开班计划:为梦想插上腾飞的翅膀!

随着夏日的脚步渐近&#xff0c;誉天教育也迎来了新一轮的学习热潮。在这个充满活力和希望的季节里&#xff0c;我们精心策划了7月的开班计划&#xff0c;旨在为广大学子提供一个优质、高效的学习平台&#xff0c;助力他们追逐梦想&#xff0c;实现自我价值。 本月 Linux云计算…

HTTP协议详解

HTTP协议详解 一、HTTP协议概述二、网络基础与HTTP2.1 TCP/IP协议2.2 发送HTTP请求过程2.3 HTTP请求的组成部分 三、HTTP报文HTTP请求报文HTTP响应报文 结语 一、HTTP协议概述 HTTP&#xff0c;即超文本传输协议&#xff08;Hypertext Transfer Protocol&#xff09;&#xff…

探讨3D沉浸式在线会议系统的研发 - Meta演示的元宇宙虚拟化身多人对话场景,Web端现在也可以实现了 !

要实现一个元宇宙多人会议系统&#xff0c;关键技术有&#xff1a; 1. 3D虚拟空间的构建&#xff08;含光影特效、虚拟现实和增强现实&#xff09; 2. 3D虚拟化身的构建&#xff08;含动画、表情、语音&#xff09; 3. 多人角色管理 4. 会话控制和信息同步 5. 语音合成 6…