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

接美国血统(中序、后序→前序)

中序、后序→前序

#include <iostream>
#include <string>
using namespace std;string preorderResult;  // 存储生成的前序遍历结果
string inorder, postorder;  // 输入的中序和后序遍历// 递归生成前序遍历
// 参数:中序[inStart, inEnd],后序[postStart, postEnd]
void buildAndPreorder(int inStart, int inEnd, int postStart, int postEnd) {if (inStart > inEnd || postStart > postEnd) {return;  // 子树为空,直接返回}// 步骤1:后序遍历的最后一个元素是当前子树的根节点char rootVal = postorder[postEnd];// 前序遍历先访问根节点,直接加入结果preorderResult += rootVal;// 步骤2:在中序遍历中找到根节点的位置int rootIndex = inStart;while (rootIndex <= inEnd && inorder[rootIndex] != rootVal) {rootIndex++;}// 步骤3:计算左子树的节点数量int leftSize = rootIndex - inStart;// 步骤4:递归处理左子树// 左子树中序:[inStart, rootIndex-1]// 左子树后序:[postStart, postStart + leftSize - 1](共leftSize个节点)buildAndPreorder(inStart, rootIndex - 1, postStart, postStart + leftSize - 1);// 步骤5:递归处理右子树// 右子树中序:[rootIndex+1, inEnd]// 右子树后序:[postStart + leftSize, postEnd - 1](剩余节点)buildAndPreorder(rootIndex + 1, inEnd, postStart + leftSize, postEnd - 1);
}int main() {cin >> inorder >> postorder;  // 输入中序和后序遍历// 调用递归函数,处理整个树buildAndPreorder(0, inorder.size() - 1, 0, postorder.size() - 1);cout << preorderResult << endl;  // 输出前序遍历结果return 0;
}
http://www.lryc.cn/news/627039.html

相关文章:

  • 【网络运维】Linux:正则表达式
  • 虚幻引擎目录结构
  • AGV小车cad+三维图+设计说明书
  • C++ 力扣 438.找到字符串中所有字母异位词 题解 优选算法 滑动窗口 每日一题
  • Java 线程池ThreadPoolExecutor源码解读
  • 服务器内存条不识别及服务器内存位置图
  • linux的sysctl系统以及systemd系统。
  • 【网络运维】Linux 文本处理利器:sed 命令
  • MYSQL-增删查改CRUD
  • uni-app跨端开发最后一公里:详解应用上架各大应用商店全流程
  • 生产级的雪花算法
  • 自动驾驶导航信号使用方式调研
  • C语言实现全排列(非递归法)(以猪八戒买包子的故事为例解释)
  • SpringBoot 整合 Langchain4j RAG 技术深度使用解析
  • imx6ull-驱动开发篇30——Linux 非阻塞IO实验
  • redis---常用数据类型及内部编码
  • 设计具有功能安全和网络安全能力的新型半导体芯片
  • 攻克PostgreSQL专家认证
  • Unicode 字符串转 UTF-8 编码算法剖析
  • JVM面试精选 20 题(终)
  • SQL count(*)与 sum 区别
  • 第三阶段数据-4:SqlHelper类,数据库删除,DataTable创建
  • STM32F4 内存管理介绍及应用
  • 建模工具Sparx EA的多视图协作教程
  • PyTorch - Developer Notes
  • 吴恩达 Machine Learning(Class 3)
  • 国产化PDF处理控件Spire.PDF教程:如何使用 Python 添加水印到 PDF
  • Linux命令大全-ps命令
  • Linux系统之部署nullboard任务管理工具
  • 基于springboot中学信息技术课程教学网站