【数据结构】树与二叉树、树与森林部分习题以及算法设计例题 2

目录

  • 【数据结构】树与二叉树、树与森林部分习题以及算法设计例题
    • 一、交换二叉树每个结点的左右孩子
      • Swap 函数(先序遍历):
      • Swap 函数(中序遍历)××× 不可行:
      • Swap 函数(后序遍历):
    • 二、非递归算法求森林中有几棵树
      • 树的二叉链表(孩子-兄弟)存储表示法
    • 三、判断二叉树是否为完全二叉树
    • 四、求二叉树的最小深度 以及 二叉树树高

  1. 树与二叉树知识点文章: 【数据结构】树与二叉树(递归法先序、中序、后序、层次遍历二叉树、二叉树的建立以及求树高的方法)
  2. 二叉树遍历算法的应用: 【数据结构】树与二叉树遍历算法的应用(求叶子节点个数、求树高、复制二叉树、创建二叉树、二叉树存放表达式、交换二叉树每个结点的左右孩子)
  3. 树与森林知识点文章: 【数据结构】树与森林(树的存储结构、森林与二叉树的转化、树与森林的遍历)
  4. 树与二叉树、树与森林部分习题: 【数据结构】树与二叉树、树与森林部分习题与算法设计例题

【数据结构】树与二叉树、树与森林部分习题以及算法设计例题

一、交换二叉树每个结点的左右孩子

以上代码实现了交换二叉树每个节点的左右孩子的功能,分别使用了先序、中序和后序遍历的方式。

遍历二叉树算法的变式:

  1. Swap 函数(先序遍历):

    • 从根节点开始,先交换当前节点的左右孩子。
    • 然后递归地对左子树和右子树执行相同的操作。
  2. Swap2 函数(中序遍历):

    • 与先序遍历不同,中序遍历中需要先对左子树进行操作,然后交换当前节点的左右孩子,最后对右子树进行操作。
    • 但是这个实现方式是错误的,因为在交换左子树之后,对右子树进行操作时,右子树的结构已经发生了变化,导致结果错误。
  3. Swap3 函数(后序遍历):

    • 与先序遍历类似,但是是在遍历完左右子树之后再交换当前节点的左右孩子。
    • 这样可以保证在交换左右孩子时,左右子树的结构不会被改变。

通过上述分析,正确的交换方式是采用先序或后序遍历,中序遍历方式不适合这个场景。

Swap 函数(先序遍历):

//前序
void Swap(BiTree& T){
	//(先序遍历) 
	if(T){
	//根节点 
		if(T->lchild||T->rchild){
			BiTree p;
			p= T->lchild;
			T->lchild = T->rchild;
			T->rchild = p;
		}
		Swap(T->lchild);
		Swap(T->rchild);
	}
}

Swap 函数(中序遍历)××× 不可行:

//中序的不行 
void Swap2(BiTree& T){
	//(中序遍历) 
	
	if(T){
	//根节点 
		Swap2(T->lchild);
		if(T->lchild||T->rchild){
			BiTree p;
			p= T->lchild;
			T->lchild = T->rchild;
			T->rchild = p;
		}
		Swap2(T->rchild);
		
	}
}

Swap 函数(后序遍历):

//后序
void Swap3(BiTree& T){
	//(后序遍历) 
	
	if(T){
	//根节点 
		Swap3(T->lchild);
		Swap3(T->rchild);
		if(T->lchild||T->rchild){
			BiTree p;
			p= T->lchild;
			T->lchild = T->rchild;
			T->rchild = p;
		}
	}
	
	
}

综上可行的只有先序和后序这两种方法:

//交换二叉树每个结点的左右孩子
//先序
void XXSwap_LandRchild(BiTree &T){
    BiTree p;
    if(T==NULL) return;
    else{//先序
        if(!T->lchild&&!T->rchild) return;

        p=T->lchild;
        T->lchild=T->rchild;
        T->rchild=p;

        XXSwap_LandRchild(T->lchild);

        XXSwap_LandRchild(T->rchild);
    }
}
//后序
void HXSwap_LandRchild(BiTree &T){
    BiTree p;
    if(T==NULL) return;
    else{//后序
        if(!T->lchild&&!T->rchild) return;
        HXSwap_LandRchild(T->lchild);
        HXSwap_LandRchild(T->rchild);

        p=T->lchild;
        T->lchild=T->rchild;
        T->rchild=p;
    }
}

完整代码示例:

//设二叉树采用二叉链表存储,设计递归算法实现二叉树中所有结点的左右孩子交换。
#include<iostream>
using namespace std;

//二叉链表
typedef struct BiTNode{
    char data;
    struct BiTNode *lchild,*rchild;
} BiTNode, *BiTree;

//二叉树的建立的算法(按先序遍历序列建立)
void CreateBiTree(BiTree &T) {
	char ch; 
    scanf("%c",&ch);
    if (ch=='#') T = NULL;
    else {
        T = (BiTNode*)malloc(sizeof(BiTNode));
        T->data = ch;      // 生成根结点
        CreateBiTree(T->lchild); // 构造左子树
        CreateBiTree(T->rchild); // 构造右子树
    }
}


void XXSwap_LandRchild(BiTree &T){
    BiTree p;
    if(T==NULL) return;
    else{//先序
        if(!T->lchild&&!T->rchild) return;

        p=T->lchild;
        T->lchild=T->rchild;
        T->rchild=p;

        XXSwap_LandRchild(T->lchild);

        XXSwap_LandRchild(T->rchild);
    }
}

void HXSwap_LandRchild(BiTree &T){
    BiTree p;
    if(T==NULL) return;
    else{//后序
        if(!T->lchild&&!T->rchild) return;
        HXSwap_LandRchild(T->lchild);
        HXSwap_LandRchild(T->rchild);

        p=T->lchild;
        T->lchild=T->rchild;
        T->rchild=p;
    }
}


void XXPrintTree(BiTree T){
    if(T==NULL) return;
    else{
        cout<<T->data<<" ";
        XXPrintTree(T->lchild);
        XXPrintTree(T->rchild);
    }
}


int main()
{
    BiTree T;
    CreateBiTree(T);
    XXPrintTree(T);
    cout<<endl;
    XXSwap_LandRchild(T);
    XXPrintTree(T);
    cout<<endl;
    HXSwap_LandRchild(T);
    XXPrintTree(T);
    cout<<endl;
    return 0;
}

二、非递归算法求森林中有几棵树

树的二叉链表(孩子-兄弟)存储表示法

[fc,data,nb]
在这里插入图片描述

typedef struct CSNode{
    int data;
    struct CSNode *fc, *nb;
}CSNode, *CSTree;

树中每个结点三部分:
数据域(data),长子指针域(fc),
右邻兄弟指针域(nb)

树和二叉树的转换
• 树以孩子兄弟表示法存,相当于将树转换成二叉树,但此二叉树根结点无右子树
• 好处:借助二叉树的操作实现树的操作

森林与二叉树的转换

⮚ 树采用二叉链表(孩子-兄弟)存储表示法,转换成二叉树
⮚ 森林由多棵树组成: F = ( T 1 , T 2 , … , T n ) F = ( T1, T2, …, Tn ) F=(T1,T2,,Tn); 将其每棵树转换成二叉树 B T 1 , B T 2 , … , B T n BT₁, BT₂, …, BTn BT1,BT2,,BTn;
⮚ 每棵二叉树BT的根的右子树皆为空树,从BTn开始依次将其根结点链为前一棵二叉树的根的右孩子
⮚ 将森林转换成一棵二叉树,森林的操作可借助二叉树的操作完成

森林和二叉树的转换
• 森林以孩子兄弟表示法存,相当于将森林转换成二叉树
• 好处:借助二叉树的操作实现森林的操作

因此只需要一直向右下数结点的个数就行

typedef struct CSNode{
    int data;
    struct CSNode *fc, *nb;
}CSNode, *CSTree;

//非递归算法求森林中有几棵树。
int CountForestTrees(CSTree F){
    CSTree p=F;
    int num=1;
    while(p){
        p=p->nb;//右子树
        num++;
    }
    return num;
}

完整代码示例:

//设森林采用根节点为T的二叉链表存储,设计非递归算法求森林中有几棵树。
#include<iostream>
using namespace std;

typedef struct CSNode{
    int data;
    struct CSNode *fc, *nb;
}CSNode, *CSTree;


//二叉树的建立的算法(按先序遍历序列建立)
void CreateBiTree(CSTree &T) {
	char ch; 
    scanf("%c",&ch);
    if (ch=='#') T = NULL;
    else {
        T = (CSNode*)malloc(sizeof(CSNode));
        T->data = ch;      // 生成根结点
        CreateBiTree(T->fc); // 构造左子树
        CreateBiTree(T->nb); // 构造右子树
    }
}


//非递归算法求森林中有几棵树。
int CountForestTrees(CSTree F){
    CSTree p=F;
    int num=1;
    while(p){
        p=p->nb;//右子树
        num++;
    }
    return num;
}


int main()
{
    CSTree T;
    CreateBiTree(T);
    cout<<"森林一共有"<<CountForestTrees(T)<<"棵树"<<endl;

    return 0;
}

三、判断二叉树是否为完全二叉树

判断二叉树是否为完全二叉树的函数:

//完全二叉树的性质
bool check(BiTree T){
    if((T->lchild && T->rchild)||(!T->lchild && !T->rchild))
        return true;
    return false;
}       


//判断是否的完全二叉树
bool is_Complete_Binarytree(BiTree T){
    BiTree p=T;
    SqQueue Q;
    if(!T) return true;//空树也是完全二叉树
    InitQueue(Q);
    EnQueue(Q,p);
    while(!is_QueueEmpty(Q)){
        DeQueue(Q,p);
        if(!check(p)) return false;
        else{
            if(p->lchild) 
                EnQueue(Q,p->lchild);
		    if(p->rchild) 
                EnQueue(Q,p->rchild);
        }
    }
    return true;
}

(带main函数)题解代码示例:

//给定一个二叉树,找出其最小深度。
//最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

#include<iostream>
using namespace std;


//判断二叉树是否为完全二叉树

//结点定义入下:
//二叉链表
typedef struct BiTNode{
    char data;
    struct BiTNode *lchild,*rchild;
} BiTNode, *BiTree;

//若用到队列,请用循环队列,并请实现队列的相关操作以供调用。

#define MAXQSIZE 100

typedef struct {
    BiTree *base;
    int front,rear;
} SqQueue; //定义循环队列


//二叉树的建立的算法(按先序遍历序列建立)
void CreateBiTree(BiTree &T) {
	char ch; 
    scanf("%c",&ch);
    if (ch=='#') T = NULL;
    else {
        T = (BiTNode*)malloc(sizeof(BiTNode));
        T->data = ch;      // 生成根结点
        CreateBiTree(T->lchild); // 构造左子树
        CreateBiTree(T->rchild); // 构造右子树
    }
}
//队列的初始化
void InitQueue(SqQueue &Q){
    Q.base = (BiTree *)malloc(MAXQSIZE*sizeof(BiTree));
    Q.front = Q.rear = 0;//队列初始化
}

//队空
bool is_QueueEmpty(SqQueue Q){
    if(Q.rear==Q.front) return true;
    return false;
}

//队满
bool is_QueueMAX(SqQueue Q){
    if((Q.rear+1)%MAXQSIZE == Q.front) return true;
    return false;
}


//入队
void EnQueue(SqQueue &Q,BiTree e){
    if(!is_QueueMAX(Q)){
        Q.base[Q.rear]=e;
        Q.rear = (Q.rear + 1) % MAXQSIZE;
    }
    
    else{
        cout<<"ERROR!!! 队列已满"<<endl;
    }
}
//出队
void DeQueue(SqQueue &Q,BiTree &e){
    if(!is_QueueEmpty(Q)){
        e = Q.base[Q.front];
        Q.front = (Q.front + 1) % MAXQSIZE;
    }
    else{
        cout<<"ERROR!!! 队列为空"<<endl;
    }
}

//完全二叉树的性质
bool check(BiTree T){
    if((T->lchild && T->rchild)||(!T->lchild && !T->rchild))
        return true;
    return false;
}       


//判断是否的完全二叉树
bool is_Complete_Binarytree(BiTree T){
    BiTree p=T;
    SqQueue Q;
    if(!T) return true;//空树也是完全二叉树
    InitQueue(Q);
    EnQueue(Q,p);
    while(!is_QueueEmpty(Q)){
        DeQueue(Q,p);
        if(!check(p)) return false;
        else{
            if(p->lchild) 
                EnQueue(Q,p->lchild);
		    if(p->rchild) 
                EnQueue(Q,p->rchild);
        }
    }
    return true;
}

//层次遍历算法 
void LevelOrderTraverse(BiTree T)
{	BiTree p = T;
	SqQueue Q;
	
	
	if(!T) return;	
	
	InitQueue(Q); EnQueue(Q,p);
	while (!is_QueueEmpty(Q))
	{	DeQueue(Q,p);
		printf("%c ", p->data);
		if(p->lchild) EnQueue(Q,p->lchild);
		if(p->rchild) EnQueue(Q,p->rchild);
	}
}




int main(){
	 
	BiTree T;
	//例如输入:ABC##DE##F### 来创建二叉树 
	CreateBiTree(T);
    LevelOrderTraverse(T);
    cout<<endl;
    if(is_Complete_Binarytree(T)){
        cout<<"是完全二叉树"<<endl;
    }
    else{
        cout<<"不是完全二叉树"<<endl;
    }
	

	return 0; 
} 

四、求二叉树的最小深度 以及 二叉树树高

给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

求二叉树的最小深度的函数:

//直接就是将求树高的程序进行修改,将找左右子树最大树高 改为求左右子树 最小树高
//求二叉树的最小深度
int Get_minHeigt(BiTree T){
    //二叉树的最小深度
    if(T==NULL) return 0;
    else{
        int Left_Height = Get_minHeigt(T->lchild);
        int Right_Height = Get_minHeigt(T->rchild);
        int Tree_minHeight = 1+(Left_Height < Right_Height?Left_Height:Right_Height);//取最短路径
        return Tree_minHeight;
    }

}

(带main函数)题解代码示例:

//给定一个二叉树,找出其最小深度。
//最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

#include<iostream>
using namespace std;


typedef struct TreeNode{
	int data;//数据域
	TreeNode *rchild;//右孩子指针
	TreeNode *lchild;//左孩子指针
}TreeNode, *BiTree;


//二叉树的建立的算法(按先序遍历序列建立)
void CreateBiTree(BiTree &T) {
	char ch; 
    scanf("%c",&ch);
    if (ch=='#') T = NULL;
    else {
        T = (TreeNode*)malloc(sizeof(TreeNode));
        T->data = ch;      // 生成根结点
        CreateBiTree(T->lchild); // 构造左子树
        CreateBiTree(T->rchild); // 构造右子树
    }
}


//求树高 
int Get_Height(BiTree node){//递归 求树高 
	if(node==NULL) return 0;
	else{
		int Left_Height = Get_Height(node->lchild);
		int Right_Height = Get_Height(node->rchild);
		int Tree_Height = 1 + (Left_Height > Right_Height?Left_Height:Right_Height);//计算树高
    	return Tree_Height;
	}
	
}
//求二叉树的最小深度
int Get_minHeigt(BiTree T){
    //二叉树的最小深度
    if(T==NULL) return 0;
    else{
        int Left_Height = Get_minHeigt(T->lchild);
        int Right_Height = Get_minHeigt(T->rchild);
        int Tree_minHeight = 1+(Left_Height < Right_Height?Left_Height:Right_Height);//取最短路径
        return Tree_minHeight;
    }

}


int main(){
	 
	BiTree T;
	//例如输入:ABC##DE##F### 来创建二叉树 
	CreateBiTree(T);

	cout<<"树高为:" ;
	cout<<Get_Height(T)<<endl;
    cout<<"根节点到叶节点的最短路径上的节点数量为:";
    cout<<Get_minHeigt(T)<<endl;

	return 0; 
} 

感谢阅读!!!

  1. 树与二叉树知识点文章: 【数据结构】树与二叉树(递归法先序、中序、后序、层次遍历二叉树、二叉树的建立以及求树高的方法)
  2. 二叉树遍历算法的应用: 【数据结构】树与二叉树遍历算法的应用(求叶子节点个数、求树高、复制二叉树、创建二叉树、二叉树存放表达式、交换二叉树每个结点的左右孩子)
  3. 树与森林知识点文章: 【数据结构】树与森林(树的存储结构、森林与二叉树的转化、树与森林的遍历)
  4. 树与二叉树、树与森林部分习题: 【数据结构】树与二叉树、树与森林部分习题与算法设计例题

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

打造属于你的体育直播平台:使用东莞梦幻网络源码缺点和优点

随着互联网的快速发展&#xff0c;体育直播平台已经成为了人们获取体育赛事信息和互动交流的重要渠道。为了快速搭建这样一个平台&#xff0c;许多企业和个人选择使用现成的源码&#xff0c;其中东莞梦幻网络科技提供的体育直播源码备受关注。然而&#xff0c;在选择使用该源码…

授权协议OAuth 2.0之JWT

写在前面 本文看下JWT相关内容。 1&#xff1a;为什么需要JWT OAuth2.0规范中并没有规定access_token使用什么样的格式&#xff0c;只要求满足&#xff0c;不连续性&#xff0c;不可猜测性&#xff0c;不可重复性就可以了&#xff0c;所以我们在生成accest_token的时候就比较…

解决:IDEA编译报错,自动切换JDK编译版本

一、IDEA切换JDK版本 要想在IDEA中完成对JDK版本的切换有多个地方需要我们进行修改 File | Settings | Build, Execution, Deployment | Compiler | Java Compiler File->ProjectStruct->platform settings->SDKS File->ProjectStruct->projectSettings->…

算法|基础算法|高精度算法

基础算法|位运算 1.高精度加法 2.高精度减法 3.高精度乘法 4.高精度除法 心有猛虎&#xff0c;细嗅蔷薇。你好朋友&#xff0c;这里是锅巴的C\C学习笔记&#xff0c;常言道&#xff0c;不积跬步无以至千里&#xff0c;希望有朝一日我们积累的滴水可以击穿顽石。 高精度加法 …

GPT-4 都已经这么强了,那未来的 GPT-5 会是什么样子?

GPT-4 可以说是再一次颠覆了我对 AI 的认知&#xff0c;从文本到图片视频&#xff0c;再到逻辑推理&#xff0c;简直是神进步。 GPT5上线前夕&#xff0c;把GPT4慢慢弄成GPT3.5的效果&#xff0c;把GPT3.5逐渐弄成GPT3的效果&#xff0c;GPT5横空出世的时候就如GPT4对GPT3.5的…

麦多馅饼创始人是谁,麦多馅饼品牌历程?

麦多馅饼的创始人是刘占华先生&#xff0c;他于2006年创建了吉林通化麦多食品有限公司。刘先生有着超过20年的餐饮连锁管理经验&#xff0c;是麦多馅饼品类的原创者。他的故事充满了奋斗和创业的精神&#xff0c;是中国餐饮行业的一段佳话。 品牌历程充满了刘占华先生的智慧和…

天工杂志社《天工》杂志社2024年第5期目录

业界翘楚 巍巍者昆仑 煌煌者华夏 乔彦鹏; 6-8 工美史话 日月之光照澈幽冥——墓葬铜镜中柿蒂纹意象辨析 周昕怡;刘春芽; 9-11 西藏传统手工艺技能教育发展历程研究 吕元菊; 12-14 探索研究《天工》投稿&#xff1a;cn7kantougao163.com 传统装饰艺术设计美学的…

如何拿捏2024年的B端设计?(附工具推荐)

伴随着2019年前的互联网人口红利时代结束&#xff0c;科技行业的基本面发生了巨大的变化&#xff0c;以普通消费者为目标的C端需求大幅萎缩&#xff0c;面向企业的B端需求成为行业热点。 在2024年的今天&#xff0c;设计师应该如何理解B端设计的实质&#xff0c;并真正驾驭B端产…

循环购模式:消费返利与积分新体验

大家好&#xff0c;我是吴军&#xff0c;今天我想和大家深入探讨一种别具一格且令人瞩目的商业模式——循环购模式。这一模式巧妙地将消费返利与积分机制相融合&#xff0c;为商家和消费者之间搭建了一座崭新的互动桥梁。 在循环购模式的运作下&#xff0c;消费者的每一次购买行…

基于springboot+vue+Mysql的地方废物回收机构管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

如何下载省,市,区县行政区Shp数据

摘要&#xff1a;一般非专业的GIS应用通常会用到省市等行政区区划边界空间数据做分析&#xff0c;本文简单介绍了如何在互联网上下载省&#xff0c;市&#xff0c;区县的shp格式空间边界数据&#xff0c;并介绍了一个好用的在线数据转换工具&#xff0c;并且开源。 目录 一、下…

AI智能分析网关V4平台告警数据清理方法:自动清理与手动清理

TSINGSEE青犀智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;目前拥有3种型号&#xff08;8路/16路/32路&#xff09;&#xff0c;支持Caffe/DarkNet/TensorFlow/PyTorch/MXNet/ONNX/PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型…

手机抓包fiddler配置及使用教程

本文基于Fiddler4讲解基本使用 fiddler抓包原理 注意&#xff1a;Fiddler 是以代理web服务器的形式工作的&#xff0c;它使用代理地址:127.0.0.1&#xff0c;端口:8888。当Fiddler退出的时候它会自动注销&#xff0c;这样就不会影响别的 程序。不过如果Fiddler非正常退出&…

浅谈Java NIO

Java NIO&#xff08;New Input/Output&#xff09;是Java平台上一种全新的IO API&#xff0c;相较于传统的Java I/O&#xff08;也称为BIO&#xff0c;阻塞I/O&#xff09;&#xff0c;NIO引入了非阻塞I/O和通道&#xff08;Channel&#xff09;的概念&#xff0c;以及缓冲区&…

力扣:49. 字母异位词分组

知识点&#xff1a; 散列函数 散列函数能使对一个数据序列的访问过程更加迅速有效&#xff0c;通过散列函数&#xff0c;数据元素将被更快地定位&#xff1a; 1. 直接寻址法&#xff1a;取关键字或关键字的某个线性函数值为散列地址。即H&#xff08;key&#xff09;key或H&a…

企业如何上百度百科

企业想要上百度百科&#xff0c;首先需要创建属于自己的词条。创建企业百度百科词条的步骤如下: 企业认证&#xff1a;企业需要提供营业执照等证明材料&#xff0c;以证明其合法性。此外&#xff0c;企业营业执照的注册时间必须满一年及以上&#xff0c;且在近一年内没有因为经…

如何在CentOS安装Firefox并结合内网穿透工具实现公网访问本地火狐浏览器

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器&#xff0c;由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

(Talk-Bot,ichat助手,ChatK,DGAL,NextChat,FreeGPT,动点原版chatgpt)分享7个好用ChatGPT

目录 目录 1、Talk-Bot 2、ichat助手 3、ChatK 4、DGAI 5、NextChat 6、Chkzh-Aink 7、FreeGPT | dongstop.vip 8、动点原版chatgpt 1、Talk-Bot https://vip.gptchatclub.org/?fromweb 2、ichat助手 https://chat.letdata.net/ichat/59w2x4n3pow https://ichat2019.com/ichat…

1231: 寻找出现次数最多的数

解法&#xff1a; #include<iostream> #include<algorithm> #include<vector> #include<unordered_map> #include<utility> using namespace std; int main() {int n, a;cin >> n;unordered_map<int, int> mp;while (n--) {cin >…

【Web】VS Code 插件

专栏文章索引&#xff1a;Web 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、安装步骤 二、插件 1.Chinese (Simplified) (简体中文) 2.open in browser 3.vscode-icons 4.Live Server 5.Live Server Preview 6.翻译(英汉词典) 一、安装步骤 点击 “扩…