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

PAT甲级-1020 Tree Traversals

题目

题目大意

给出一棵树的后序遍历和中序遍历,要求输出该树的层序遍历。

思路

非常典型的树的构建与遍历问题。后序遍历和中序遍历可以得出一个树的结构,用递归锁定根节点,然后再遍历左右子树,我之前发过类似题目的博客,这里就不再详细赘述。层序遍历就是使用队列了。

代码

#include <iostream>
#include <vector>
#include <queue>
using namespace std;int n;
vector<int> hou, mid, level;
struct node{int data;node * lchild, *rchild;
};void buildtree(node * &root, int hl, int hr, int ml, int mr){if (hl > hr || ml > mr){return;}int pos;for (int i = ml; i <= mr; i++){if (hou[hr] == mid[i]){pos = i;break;}}root = new node();root->data = hou[hr];root->lchild = root->rchild = nullptr;buildtree(root->lchild, hl, hl + pos - ml - 1, ml, pos - 1);buildtree(root->rchild, hl + pos - ml, hr - 1, pos + 1, mr);
}void findlevel(node * root){queue<node *> q;q.push(root);while (!q.empty()){node * now = q.front();level.push_back(now->data);q.pop();if (now->lchild) q.push(now->lchild);if (now->rchild) q.push(now->rchild);}
}int main(){cin >> n;hou.resize(n);mid.resize(n);for (int i = 0; i < n; i++){cin >> hou[i];}for (int i = 0; i < n; i++){cin >> mid[i];}node * root = nullptr;buildtree(root, 0, n - 1, 0, n - 1);findlevel(root);for (int i = 0; i < (int)level.size(); i++){if (i != 0) cout << " ";cout << level[i];}cout << endl;return 0;
}

http://www.lryc.cn/news/526191.html

相关文章:

  • LVGL+FreeRTOS实战项目:智能健康助手(Max30102篇)
  • 人脸识别【python-基于OpenCV】
  • redis常用命令和内部编码
  • UI操作总结
  • 数据结构——实验八·学生管理系统
  • 力扣hot100-->滑动窗口、贪心
  • Linux 内核中的高效并发处理:深入理解 hlist_add_head_rcu 与 NAPI 接口
  • centos哪个版本建站好?centos最稳定好用的版本
  • 软件越跑越慢的原因分析
  • LeetCode 力扣热题100 二叉树的直径
  • 【图文详解】lnmp架构搭建Discuz论坛
  • 小哆啦解题记:整数转罗马数字
  • 【Java数据结构】排序
  • 我的求职之路合集
  • 数据结构(四) B树/跳表
  • Arcgis国产化替代:Bigemap Pro正式发布
  • LBS 开发微课堂|AI向导接口服务:重塑用户的出行体验
  • AI导航工具我开源了利用node爬取了几百条数据
  • openstack单机安装
  • Vue3实现小红书瀑布流布局任意组件动态更新页面方法实践
  • 深度学习项目--基于LSTM的糖尿病预测探究(pytorch实现)
  • Next.js 实战 (十):中间件的魅力,打造更快更安全的应用
  • python+playwright自动化测试(四):元素操作(键盘鼠标事件)、文件上传
  • 【论文+源码】Diffusion-LM 改进了可控文本生成
  • 双目立体校正和Q矩阵
  • vscode 自用插件
  • OpenCV:在图像中添加高斯噪声、胡椒噪声
  • DuckDB:Golang操作DuckDB实战案例
  • MySQL入门(数据库、数据表、数据、字段的操作以及查询相关sql语法)
  • kotlin的协程的基础概念