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

P1030 求先序序列

点击查看代码
#include<bits/stdc++.h>
using namespace std;string in,post;void preorder(int inl,int inr,int postl,int postr)
{if(inl>inr||postl>postr) return;//找到根节点并输出char root=post[postr];cout<<root;//在中序排列中找到根节点int k=inl;while(in[k]!=root) k++;int leftsize=k-inl;//依次遍历左右树preorder(inl,k-1,postl,postl+leftsize-1);preorder(k+1,inr,postl+leftsize,postr-1);    
}int main()
{cin>>in>>post;int n=in.size();preorder(0,n-1,0,n-1);return 0;
}
、 本题的核心考察点实则是递归,因为没有涉及到关键的恢复状态,递归的逻辑就是遵从中序和后序遍历的规则,依次找到分割的根节点,然后递归对应的数,再输出根节点,直到最后一棵树为空。 此外,这道题是要把中序和后序结合起来的,后序列用来确定每一课数目的根节点,就是序列的最后一个元素。而中序则在根节点已知的情况下,求出左右树的节点数,以此再度划分左右树,这两者结合才可以输出先序 再此外,理解树遍历的原理也是很重要的,先序遍历是从根节点出发,然后直接输出根节点,到达左树碰到一个节点就输出一个,然后右边树同理。中序遍历则是从根节点出发到达左树到底然后向上回升直到回到根节点输出根节点然后到右树,到达树底,然后回升输出。后序遍历的思路基本一致,只不过是最后输出根节点,因此除了第一个根节点,中序和后序的节点顺序是一样的
http://www.zskr.cn/news/78139.html

相关文章:

  • 谷歌反重力 Google Antigravity 常见问题
  • 倍增
  • 12.8每日总结
  • CommonUI-学习记录
  • 银行反欺诈day1
  • 2025年数控折弯机模具选购参考
  • 微信小程序渗透测试
  • 大数据数仓设计:分层架构与维度建模 - Binge
  • Day14-20251208
  • 遇到的前端ts语法问题记录 - wuzx
  • 从纯数学到应用AI科学的职业转变
  • threadDay01
  • 20232404 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 2025.12.7 百度之星决赛 2025
  • Python数据可视化全攻略:Matplotlib/Seaborn从入门到实战
  • 深入设计模式
  • 2025.12.1周总结
  • 小爱帮你拍-使用教程
  • 20232403 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 20232421 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 20251206 - 并查集 总结
  • 侯捷 C++ 系列课程
  • Flink学习笔记:时间与Watermark
  • 第11章 泛型、trait与生命周期 - 实践
  • ARC 078D
  • CTT 2026 游记
  • 基于奇异值分解的点云配准原理
  • LogFilter Panel: 我做了一个 grafana 中更好用的 VictoriaLogs 日志筛选面板
  • 13.结构型 - 适配器模式 (Adapter Pattern)
  • Tauri 窗口拖拽功能偶尔失效问题修复总结