【练习3】

1.将二叉搜索树转为排序的双向链表

在这里插入图片描述
(好久没看数据结构,忘完了,学习大佬的代码)

class Solution {
public:Node* pre=nullptr,*head=nullptr; //pre为每次遍历时的前一个节点,head记录头节点Node* treeToDoublyList(Node* root) {if(root==nullptr)return nullptr; //空树else{dfs(root); //得到pre和headhead->left=pre; //根节点的左指针指向它的前驱pre->right=head;//前驱的右指针指向根节点return head;}}void dfs(Node* root){if(root==nullptr)return;//空节点直接返回else{dfs(root->left);//中序遍历,先左,后右if(pre)pre->right=root;//如果该节点的左子树不为空,那么将它的前驱右指针指向它else head=root;//如果该节点的左子树为空,它就已经为根节点了root->left=pre;//此时的根节点的左指针指向它的前驱pre=root;//以该节点的后驱作为新的根节点dfs(root->right);}}

在这里插入图片描述

2.序列化与反序列化二叉树

在这里插入图片描述

class Codec {
public:// 将二叉树转为字符串string serialize(TreeNode* root) {ostringstream res;if(root == nullptr) return "null"; // 修改此处,返回字符串 "null"else {queue<TreeNode*> que;que.push(root);TreeNode* temp = nullptr; // 修改此处,初始化为nullptrwhile(!que.empty()) {int len = que.size();while(len--) {temp = que.front();que.pop();if(temp) {res << temp->val; // 修改此处,不添加空格que.push(temp->left);que.push(temp->right);} else {res << "null"; // 修改此处,添加字符串 "null"}res << " "; // 添加空格,分隔节点值}}return res.str();}}// 重建二叉树TreeNode* deserialize(string data) {istringstream input(data);string temp;vector<TreeNode*> vec;while(input >> temp) {if(temp == "null") {vec.push_back(NULL);} else {vec.push_back(new TreeNode(stoi(temp)));}}int loc = 1;for(int i = 0; i < vec.size(); i++) {if(vec[i] == NULL) continue;if(loc < vec.size()) {vec[i]->left = vec[loc];loc = loc + 1;}if(loc < vec.size()) {vec[i]->right = vec[loc];loc = loc + 1;}}return vec[0];}
};

在这里插入图片描述

3.套餐内商品的排列顺序

在这里插入图片描述

class Solution {
public:vector<string> goodsOrder(string goods) {dfs(goods, 0);return res;}
private:vector<string> res;void dfs(string& input, int loc) { // 注意这里传入的是 input 的引用if (loc == input.size() - 1) { // 当 loc 到达字符串末尾时res.push_back(input); // 将当前字符串加入结果集return;}set<char> st; // 用于去重for (int i = loc; i < input.size(); i++) {if (st.find(input[i]) != st.end()) continue; // 如果当前字符已经在当前位置之前出现过,则跳过st.insert(input[i]); // 将当前字符加入到集合中swap(input[i], input[loc]); // 将当前字符与位置 loc 的字符交换dfs(input, loc + 1); // 递归处理下一个位置swap(input[i], input[loc]); // 恢复交换之前的状态,进行下一次尝试}}
};

在这里插入图片描述

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

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

相关文章

Web服务器和Tomcat

Web介绍 对于http协议操作进行封装、简化web程序开发 部署web项目&#xff0c;对外提供上网信息浏览 Tomcat介绍 一个轻量级的web服务器 也称为web容器 Tomcat的文件夹介绍 下载地址&#xff1a;Apache Tomcat - Apache Tomcat 9 Software Downloads 安装&#xff1a;直…

游戏理解入门:Rust+Bracket开发一个小游戏

1. Game loop 使用game loop可以使得游戏运行更加流畅和顺滑&#xff0c;它可以&#xff1a; 初始化窗口、图形和其他资源&#xff1b;每当屏幕刷新他都会运行(通常是每秒30,60 )&#xff1b;每次通过循环&#xff0c;他都会调用游戏的tick()函数。 大致的原理流程如下&…

【JUC】并发编程 Synchronized 锁升级原理

Synchronized如何实现同步/互斥的效果&#xff1f; monitorenter&#xff1a; 将锁对象对象头中Mark Word的前30bit替换成指向操作系统中与其关联的monitor对象&#xff0c;将锁记录位状态改为10 monitorexit&#xff1a; 将锁对象对象头中Mark Word进行重置&#xff0c;重新恢…

元器件的检测及万用表的使用

实验目的&#xff1a; 1. 了解万用表的结构和原理&#xff1b; 2. 识别常用电子元器件&#xff0c;学习使用万用表测量电阻、电感、电容和二极管的方法&#xff1b; 3. 学习使用万用表测量直流电压和直流电流的方法&#xff1b; 4. 理解万用表内阻对测量结果的影响&#xf…

Bert 实现情感分析任务

BERT Bert &#xff08;Bidirectional Encoder Representations from Transformers&#xff09;预训练模型是 Google 2018开源的自然语言模型&#xff0c;主要有以下特点。 像它名字一样&#xff0c;BERT最显著的特点是其能够为文本中的每个标记考虑双向上下文。与传统的基于…

【3dmax笔记】035: 车削修改器

一、车削修改器介绍 车削&#xff1a;图形通过绕轴旋转来创建三维效果。 开放的样条线&#xff0c;车削之后是面片。闭合的样条线&#xff0c;车削之后&#xff0c;是实体。 一、车削修改器实例 绘制高脚杯&#xff0c;首先在前视图绘制如下二维图形。 添加一个车削的修改器…

理解DPI:从数码到打印的深入分析

目录标题 1. DPI的定义2. DPI与图像质量2.1. 对于打印来说&#xff1a;2.2. 对于屏幕显示来说&#xff1a; 3. 如何计算DPI4. 调整DPI4.1. 提高DPI&#xff1a;4.2. 降低DPI&#xff1a; 5. DPI与图像文件大小的关系6. 实际应用中的DPI6.1. 专业打印&#xff1a;6.2. 屏幕设计&…

浏览器输入URL到页面展示的过程详解

重点面试题&#xff1a;当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来&#xff0c;经历了什么&#xff1f; step 1、URL解析 URL&#xff1a;internet上的每一个网页都具有一个唯一的名称标识&#xff0c;通常称之为URL&#xff08;Uniform Resource Locator…

在国企分公司做信息宣传新闻投稿的经验分享

作为一名国企分公司的信息宣传工作者,我亲历了从传统投稿方式到数字化转型的全过程,这段经历既充满了挑战,也收获了成长。回首最初的日子,那些用邮箱投稿的时光,至今仍让我感慨万千。 初尝辛酸,邮箱投稿的艰难岁月 刚接手信息宣传工作时,我满腔热情,却很快被现实的冷水浇了个透…

springMVC入门学习

目录 1、 什么是springmvc 2、springmvc工作流程 3、 springmvc快速入门&#xff08;XML版本&#xff09; 4、加载自定义目录下的springmvc.xml配置文件 5、 解析器InternalResourceViewResolver 6、 映射器BeanNameUrlHandlerMapping 7、 适配器SimpleControllerHandle…

卡牌——蓝桥杯十三届2022国赛大学B组真题

样例输入 4 5 1 2 3 4 5 5 5 5样例输出 3样例说明 这 5 张空白牌中,拿2张写1,拿1张写2,这样每种牌的牌数就变为了3,3,3,4, 可以凑出 3套牌,剩下2张空白牌不能再帮助小明凑出一套。 评测用例规模与约定 对于30%的数据&#xff0c;保证n ⩽ \leqslant ⩽ 2000; 对于100%的数据…

低代码平台为什么被诟病?牛皮震天响,能力cover不住。

hello&#xff0c;我上有很多低代码平台&#xff0c;大多数停留在数据报表层面&#xff0c;所以在很多搞咖啡的眼里&#xff0c;低代码平台价值很低。 一、什么是低代码平台 低代码平台是一种开发工具或平台&#xff0c;旨在通过简化和加速应用程序开发过程&#xff0c;使开发…

代码随想录算法训练营第36期DAY14

DAY14&#xff08;周二&#xff09; 二叉树的递归遍历 144二叉树的前序遍历 过了。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullp…

算法学习(6)-最短路径

目录 Floyd-Warshall算法 Dijkstra算法 Bellman-Ford算法 Bellman-Ford的队列优化 最短路径算法对比分析 Floyd-Warshall算法 现在回到问题&#xff1a;如何求任意两点之间的最短路径呢&#xff1f; 通过之前的学习&#xff0c; 我们知道通过深度或广度优先搜索可以求出两…

CTF-reverse二维四向迷宫路径求解

二维四向迷宫是一个re中的常考点&#xff0c;说不上难&#xff0c;但也不简单&#xff0c;本篇记录了常规的二维四向迷宫解题套路以及帮助快速解题的脚本 可能你看我的教程会觉得十分繁琐&#xff0c;但实际只要你用了一次熟练之后&#xff0c;基本都是拿到迷宫就一题一分钟解决…

多模态EDA论文小记

论文地址 该论文主要改进点是&#xff1a;通过动态化局部搜索中每个集群大小&#xff0c;高斯和柯西分布共同产生个体。总的来说改进点不多&#xff0c;当然也可能是笔者还没发现。 局部搜索 划分集群 划分集群有两个策略分别是&#xff1a; 随机生成一个点作为中心点&…

【管理咨询宝藏96】企业数字化转型的中台战略培训方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏96】企业数字化转型的中台战略培训方案 【格式】PDF版本 【关键词】SRM采购、制造型企业转型、数字化转型 【核心观点】 - 数字化转型是指&…

C#winfrom三层架构实现简单课程管理系统管理系统,三层架构实现增删改查

1. 项目展示 1.1登录展示 1.2添加课程信息展示 1.3课程信息管理-查询-修改-删除 1.4修改登录密码 2.项目功能介绍&#xff08;图&#xff09; 3.数据库设计 3.1 教师表设计 3.2 课程分类表 3.3 课程信息表 4. 创建样式界面 winfrom 超详细UI创建过程 实现双色球选号器UI界面…

SharePoint 使用renderListDataAsStream方法查询list超过5000时的数据

问题&#xff1a; 当SharePoint List里的数据超过5000时&#xff0c;如果使用常用的rest api去获取数据&#xff0c;例如 await this.sp.web.lists.getByTitle(Document Library).rootFolder.files.select(*, listItemAllFields).expand(listItemAllFields).filter(listItemA…

牛客NC97 字符串出现次数的TopK问题【中等 哈希+优先级队列 Java/Go】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee 核心 哈希&#xff0c;优先级队列Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返…