对给定数组所对应的二叉树依次完成前序,中序,后序遍历,并输出遍历结果。

对给定数组所对应的二叉树依次完成前序,中序,后序遍历,并输出遍历结果。每行输入为一个二叉树,一维数组形式。其中-1表示Nil节点,例如:1,7,2,6,-1,4,8 构成的二叉树如下图所示:

在这里插入图片描述
结果以二维数组形式输出(前序,中序,后序遍历的结果),其中Nil节点不用输出。
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M

示例1
输入例子:
[1,7,2,6,-1,4,8]
输出例子:
[[1,7,6,2,4,8],[6,7,1,4,2,8],[6,7,4,8,2,1]]

例子说明:
注意二维数组中的结果依次为:前序,中序,后序遍历的结果,Nil(-1)节点不用输出。

算法步骤:

  • 首先,使用队列的方式创建二叉树;
  • 其次,对二叉树进行先序、中序、后序遍历,并保存值;
  • 最终,输出遍历结果;

#include <queue>
class Solution {public:/*** 对给定的二叉树依次完成前序,中序,后序遍历,并输出遍历结果* @param input int整型一维数组 -1表示Nil节点* @param inputLen int input数组长度* @return int整型vector<vector<>>*/typedef struct BTNode {int val;struct BTNode* lchild;struct BTNode* rchild;} BTNode;void createNode(BTNode*& node, int val) {node = (BTNode*)malloc(sizeof(BTNode));node->val = val;node->lchild = nullptr;node->rchild = nullptr;}void preorderTrval(BTNode* node, vector<int>& rs) {if (node != nullptr) {if (node->val != -1) {rs.push_back(node->val);}preorderTrval(node->lchild, rs);preorderTrval(node->rchild, rs);}}void inorderTrval(BTNode* node, vector<int>& rs) {if (node != nullptr) {inorderTrval(node->lchild, rs);if (node->val != -1) {rs.push_back(node->val);}inorderTrval(node->rchild, rs);}}void houorderTrval(BTNode* node, vector<int>& rs) {if (node != nullptr) {houorderTrval(node->lchild, rs);houorderTrval(node->rchild, rs);if (node->val != -1) {rs.push_back(node->val);}}}vector<vector<int>> binaryTreeScan(int* input, int inputLen) {vector<vector<int> > res;queue<BTNode*> qu;if (inputLen == 0) {return res;}BTNode* head;createNode(head, input[0]);qu.push(head);int index = 1;while (!qu.empty()) {BTNode* no = qu.front();if (index < inputLen) {createNode(no->lchild, input[index]);qu.push(no->lchild);}index++;if (index < inputLen) {createNode(no->rchild, input[index]);qu.push(no->rchild);}index++;qu.pop();}vector<int> re1;preorderTrval(head, re1);res.push_back(re1);re1.clear();inorderTrval(head, re1);res.push_back(re1);re1.clear();houorderTrval(head, re1);res.push_back(re1);return res;}
};

删除数组中的重复项

给定一个数组,你需要删除其中重复出现的元素,只保留最后一次出现的重复元素,使得每个元素只出现一次,返回新数组,并保证新数组中的元素顺序与原数组一致。

vector<int> removeDuplicate(int* array, int arrayLen) {map<int, int> us;for (int i = 0; i < arrayLen; i++) {us[array[i]] = i;}vector<pair<int, int>> vc;for (auto nums : us) {vc.push_back(pair{ nums.first,nums.second });}sort(vc.begin(), vc.end(), [&](pair<int, int> num1, pair<int, int> num2) {return num1.second < num2.second; });vector<int> res;for (auto vv : vc) {res.emplace_back(vv.first);}return res;}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

pikachu文件包含漏洞靶场

File inclusion(local) 创建1.php 步骤一&#xff1a;选择一个球员提交 ../../../../1.php File Inclusion(remote)&#xff08;远程文件包含&#xff09; 步骤一&#xff1a;更改参数 php.ini ⾥有两个重要的参数 allow_url_fopen 、allow_url_include &#xff1b; 步骤二…

springboot集成guava布隆过滤器

1.创建springboot项目&#xff0c;引入maven依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency>2.创建guava布隆过滤器 Component public class Gua…

浅析WebRTC技术在智慧园区视频管理场景中的应用

随着科技的飞速发展&#xff0c;智慧园区作为城市智慧化的重要组成部分&#xff0c;正逐步成为现代化管理的重要方向。智慧园区的建设不仅涉及硬件设施的智能化升级&#xff0c;还离不开高效的视频管理和实时通信技术。在这一背景下&#xff0c;WebRTC&#xff08;Web Real-Tim…

Ubuntu系统+宝塔面板部署Frp内网穿透服务

一、搭建目的 上次在局域网中搭建了自己的个人网盘之后&#xff0c;上传文件、照片都很方便&#xff0c;但是只能限制在内网中访问&#xff01;所以这次再搭建一个内网穿透服务器&#xff0c;这样不管在哪里都能访问到家里的云盘&#xff01; 二、内网穿透Frp是什么&#xff1…

猴子排序:一种理论上的排序算法

猴子排序&#xff1a;一种理论上的排序算法 在编程和算法的世界里&#xff0c;总有一些有趣的算法让人忍俊不禁&#xff0c;同时又让人深思。今天&#xff0c;我们来聊聊一种特别的排序算法——猴子排序&#xff08;Bogosort&#xff09;&#xff0c;也常被戏称为瞎子排序、波…

无需前端技能:如何使用 Amis 框架简化页面开发

Amis 是一个由百度开源的前端低代码框架&#xff0c;它允许开发者通过 JSON 配置文件来快速生成各种后台管理页面。Amis 的设计理念是通过配置而非编码来实现页面的构建&#xff0c;这使得即使是不熟悉前端技术的开发者也能快速上手。Amis 提供了丰富的组件库和模板&#xff0c…

SpringFrameWork学习笔记

本笔记基于【尚硅谷新版SSM框架全套视频教程&#xff0c;Spring6SpringBoot3最新SSM企业级开发】https://www.bilibili.com/video/BV1AP411s7D7?vd_sourcea91dafe0f846ad7bd19625e392cf76d8 总结 资料获取网址&#xff1a;https://www.wolai.com/v5Kuct5ZtPeVBk4NBUGBWF 技术…

10款高级pdf编辑器安利,能够处理99%以上pdf文件编辑问题(正版)

pdf编辑器可以帮助用户快速、高效地编辑pdf格式文档。金舟PDF编辑器支持文本、图片、注释、水印等多种元素的编辑&#xff0c;可以轻松在pdf文档中插入文字、替换内容、删除图片、移动、旋转页面等操作。 ​ PDF编辑器可以修改文字吗&#xff1f;那必然是可以的&#xff0c;而…

JDK7前时间相关类(Data,SimpleDataFormat,Calender)

Data时间类 世界标准时间&#xff1a;格林尼治时间&#xff08;GMT&#xff09; 目前世界标准时间&#xff08;UTC&#xff09;已经替换为&#xff1a;原子钟 中国标准时间&#xff1a;世界标准时间8小时 总结&#xff1a; 1.如何创建日期对象&#xff1f; Data data new…

机器学习数学公式推导之降维

文章目录 降维线性降维-主成分分析 PCA损失函数 P22 (系列五) 降维1-背景 本文参考 B站UP: shuhuai008 &#x1f339;&#x1f339; 降维 我们知道&#xff0c;解决过拟合的问题除了正则化和添加数据之外&#xff0c;降维就是最好的方法。降维的思路来源于维度灾难的问题&…

【问题分析】SetupWizard退出动画卡住【Android15】

1 问题描述 从SetupWizard退出进入Launcher的过程中&#xff0c;SetupWizard的相关界面在退出的动画过程中短暂卡在了某个阶段&#xff0c;如下图所示&#xff1a; 2 问题分析 2.1 log分析 透过现象看本质&#xff0c;看log此过程中没有冻屏之类的操作&#xff0c;那么出现长…

BIO、NIO编程与直接内存、零拷贝详解

目录 一、网络通信编程基本常识 什么是 Socket&#xff1f; 短连接 长连接 什么时候用长连接&#xff0c;短连接&#xff1f; 网络编程里通用常识 二、Java 原生网络编程-BIO 原生 JDK 网络编程 BIO 原生 JDK 网络编程 NIO 什么是 NIO&#xff1f; 和BIO 的主要区别 NI…

代码随想录算法训练营_day29

题目信息 134. 加油站 题目链接: https://leetcode.cn/problems/gas-station/题目描述: 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你…

什么是网络准入控制系统?四款网络准入控制系统推荐 干货满满!

在当今的企业网络环境中&#xff0c;随着设备类型的多样化和远程办公的普及&#xff0c;网络安全面临的挑战愈加复杂。网络准入控制系统&#xff08;Network Access Control, NAC&#xff09;应运而生&#xff0c;成为企业保障网络安全的重要工具。本文就带你详细了解这一系统&…

C++ 学习 2024.9.3

封装栈与队列 栈: #include <iostream>using namespace std;class Stack { private:int *a; //动态数组存储元素int size; //栈容量int top; //栈顶元素索引 public://有参构造Stack(int size):size(size),top(-1){anew int[size];}//析构~Stack(){delete[]a…

在SpringBoot项目中使用多线程(配合线程池)加快从MySQL导入数据到ElasticSearch的速度

文章目录 1. 准备工作1.1 索引库1.2 建表1.3 实体类1.3.1 item.java1.3.2 itemDocument.java 1.4 编写配置文件1.5 编写 Mapper 类和 Service 类 2. 没有使用多线程的情况2.1 编码2.2 测试结果 3. 使用多线程&#xff08;配合线程池&#xff09;的情况3.1 自定义类&#xff0c;…

python与pytroch相关

1.pytroch模型类 PyTorch 是一个易学且清晰明了的深度学习库。本节讲解如何查看一个模型的结构。 首先&#xff0c;最简单创建模型的方式如下&#xff1a; #导入必要的库 import torch.nn as nn myNetnn.Sequential(nn.Linear(2,10),#第一层&#xff08;全连接层&#xff09;&…

【苍穹外卖】Day 5 Redis、店铺营业状态接口

1 基本介绍 Redis是一个基于 内存 的 key-value 结构数据库 基于内存存储&#xff0c;读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 运行 在cmd下 redis-server.exe redis.windows.conf 启动状态下&#xff0c;再 redis-cli.exe 测试&#xff1a; 也可以…

继承 继承 继承 屁

1.栈 #include <iostream>using namespace std; class Stack {int *ptr;int size; public://无参构造Stack():size(-1){ptrnew int[8];cout<<"无参构造"<<endl;}//有参构造Stack(int a):size(0){ptrnew int[8];ptr[0]a;cout<<"有参构造…

Phalcon 增删改查的搭建过程

一 结果展示 先展示效果: 1 查询: 2 删除 3 插入 插入之前,数据库里面表的数据如下: 插入之后: