算法——先序中序还原二叉树

embedded/2025/3/17 13:31:29/

晴问算法

记得在dfs那里给指针和数组加&,指针不加不会修改,数组不加会报错

#include <bits/stdc++.h>using namespace std;vector<int> preOrder, inOrder;
vector<int> result;struct TreeNode {int data;TreeNode *left;TreeNode *right;TreeNode(int data) : data(data), left(nullptr), right(nullptr) {}
};void dfs(TreeNode* &root, vector<int> &pre, vector<int> &in) {if (pre.empty()||in.empty()) return;int rootNum = pre[0];root = new TreeNode(rootNum);int root_Index;for (root_Index = 0; root_Index < in.size(); ++root_Index) {if (in[root_Index] == rootNum) break;}vector<int> vec1(pre.begin() + 1, pre.begin() + root_Index + 1);vector<int> vec2(pre.begin() + root_Index + 1, pre.end());vector<int> vec3(in.begin(), in.begin() + root_Index);vector<int> vec4(in.begin() + root_Index + 1, in.end());dfs(root->left, vec1, vec3);dfs(root->right, vec2, vec4);}void PostOrder(TreeNode *root) {if (root == nullptr) return;PostOrder(root->left);PostOrder(root->right);result.push_back(root->data);
}int main() {int n;cin >> n;for (int i = 0; i < n; ++i) {int num;cin >> num;preOrder.push_back(num);}for (int i = 0; i < n; ++i) {int num;cin >> num;inOrder.push_back(num);}TreeNode *root;dfs(root, preOrder, inOrder);PostOrder(root);for (int i = 0; i < result.size(); ++i) {if (i != 0) cout << " ";cout << result[i];}return 0;
}


http://www.ppmy.cn/embedded/173362.html

相关文章

2025年渗透测试面试题总结-某四字大厂实习面试复盘 二面(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 某四字大厂实习面试复盘 二面 跨域的解决办法原理及安全问题 核心原理 Python多进程与多线程的选择策…

maven的安装配置

目录 一、官网下载压缩包 二、配置环境变量 设置 MAVEN_HOME 添加 MAVEN_HOME\bin 到 PATH 三、配置本机仓库和远程仓库 四、配置idea 一、官网下载压缩包 Download Apache Maven – Maven 如上图。选择这个压缩包 选择好文件&#xff0c;下载完后&#xff0c;配置环境变…

【误差理论与可靠性工程】知识点汇总,可靠性的定义,系统的分类,可靠性预计,可靠性分配

一.可靠性的定义 可靠性的定义&#xff1a;产品在规定的时间内&#xff0c;规定的条件下&#xff0c;完成规定功能的能力。 可靠度&#xff1a;产品在规定的时间内&#xff0c;规定的条件下&#xff0c;完成规定功能的概率。它是时间的函数&#xff0c;记R&#xff08;t),为可…

条件运算符

在 MySQL 中&#xff0c;BETWEEN...AND 语句是一个用于筛选数据的条件运算符&#xff0c;它可以帮助你从表中选取指定范围内的数据。 SELECT column1, column2, ... FROM table_name WHERE column_name BETWEEN value1 AND value2; 如果你想选取不在指定范围内的数据&#xff0…

【Java 优选算法】分治-归并排序

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 数组分块如二叉树的前序遍历, 而归并排序就如二叉树的后序遍历 912. 排序数组 解法 使用归并算法 根据中间点划分区间, mid (right left ) / 2将左右区间排序合并两个有…

数据库的基本概念

在当今数字化的世界中&#xff0c;数据已成为企业和组织最宝贵的资产之一。有效地管理和利用这些数据对于决策制定、服务优化和业务增长至关重要。数据库作为存储、管理及检索数据的核心工具&#xff0c;在现代信息系统中扮演着至关重要的角色。本文将介绍数据库的一些基本概念…

前端项目的构建流程无缝集成到 Maven 生态系统(一)

在阅读 nexus-public 过程中&#xff0c;发现 ui 无缝集成到 maven 中&#xff0c;这个插件在国外用的还是比较多的。当前后端一体化的工具性应用&#xff0c;一来省去了前后端来回沟通的成本&#xff0c;二来大大降低了协作时间&#xff0c;最终达成软件工具开发的低成本。正文…

C++蓝桥杯基础篇(十一)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们来学习C蓝桥杯基础篇&#xff08;十一&#xff09;&#xff0c;学习类&#xff0c;结构体&#xff0c;指针相关知识&#xff0c;准备好了吗&#xff1f;咱们开始咯~ 一、类与结构体 类的定义&#xff1a;在C中&#x…