PAT甲级1066

PAT甲级真题 1066 Root of AVL Tree (25分) C++实现(建立AVL树) 题目 An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing... 阅读详情

PAT甲级1066

题目:
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. Figures 1-4 illustrate the rotation rules.
在这里插入图片描述

Now given a sequence of insertions, you are supposed to tell the root of the resulting AVL tree.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive integer N (≤20) which is the total number of keys to be inserted. Then N distinct integer keys are given in the next line. All the numbers in a line are separated by a space.

Output Specification:
For each test case, print the root of the resulting AVL tree in one line.

Sample Input 1:
5
88 70 61 96 120
Sample Output 1:
70
Sample Input 2:
7
88 70 61 96 120 90 65
Sample Output 2:
88

题目大意:给出一组数据,建立AVL,打印最终的根节点
简单的建AVL过程,注意左旋右旋以及插入功能里要传入引用

#include <iostream>
#include <vector>
using namespace std;

struct node{
	int data,height;
	node *left,*right;
};
typedef node* Node;
int getHeight(Node root){	//获得当前节点高度
	if(root==NULL) return 0;
	return root->height;
}
int getBalanceFactor(Node root){	//获取平衡因子
	return getHeight(root->left)-getHeight(root->right);
}
void updateHeight(Node root){	//更新树高
	root->height=max(getHeight(root->left),getHeight(root->right))+1;
}
void leftRotation(Node &root){	//左旋
	Node tmp=root->right;
	root->right=tmp->left;
	tmp->left=root;
	updateHeight(root);
	updateHeight(tmp);
	root=tmp;
}
void rightRotation(Node &root){	//右旋
	Node tmp=root->left;
	root->left=tmp->right;
	tmp->right=root;
	updateHeight(root);
	updateHeight(tmp);
	root=tmp;
}
Node newNode(int data){
	Node root=new node;
	root->data=data,root->height=1;
	root->left=root->right=NULL;
	return root;
}
void insert(Node &root,int data){
	if(root==NULL){
		root=newNode(data);
		return ;
	}
	if(data<root->data){
		insert(root->left,data);
		updateHeight(root);
		if(getBalanceFactor(root)==2){	//若在左子树中插入节点使得整棵树不平衡
			if(getBalanceFactor(root->left)==1){	//在左子树的左子树中插入节点不平衡,LL型
				rightRotation(root);
			}else if(getBalanceFactor(root->left)==-1){	//在左子树的右子树中插入节点不平衡,LR型
				leftRotation(root->left);
				rightRotation(root);
			}
		}
	}else{
		insert(root->right,data);
		updateHeight(root);
		if(getBalanceFactor(root)==-2){	//若在右子树中插入节点使得整棵树不平衡
			if(getBalanceFactor(root->right)==-1){	//在右子树的右子树中插入节点不平衡,RR型
				leftRotation(root);
			}else if(getBalanceFactor(root->right)==1){	//在右子树的左子树中插入节点不平衡,RL型
				rightRotation(root->right);
				leftRotation(root);
			}
		}
	}
}
int main(){
	int n,tmp;
	scanf("%d",&n);
	Node root=NULL;
	for(int i=0;i<n;i++){
		scanf("%d",&tmp);
		insert(root,tmp);
	}
	printf("%d",root->data);
	system("pause");
	return 0;
}
智能网联汽车电子电气架构(下) 从资产的表现形式, 可以分为数据、 软件、 硬件、 服务等, 而从需要保护的业务过程和活动、 所关注信息的角度, 资产类型可包括基于 ECU 的控制功能、 与特定车辆相关的信息、 车辆状态信息、 用户信息、 配置信息、 特定的软件、 内容等。面向新一代 EEA 的安全需求, 基于芯片提供的 OTP, 或SHE\HSM 的安全存储能力, 实现系统关键数据(身份、 密钥等关键信息) 的安全存储, 保证系统的关键数据不被盗取、 破坏、 改写。结合攻击者的动机与识别出的系统用例, 分析对汽车电子系统可能的攻击。 阅读详情

相关推荐

《AFSim 2.9中文参考手册》

本栏目将对《AFSim 2.9中文参考手册》进行持续更新,欢迎关注交流!对本文或者AFSIM相关内容感兴趣的朋友,可私心联系作者。《AFSim 2.9中文参考手册》内容概览。

henggesim的博客 1万+

知识库问答KB-QA——非结构化知识篇

参考文献 揭开知识库问答KB-QA的面纱8·非结构化知识篇

strivequeen的博客 1390

大数据之父_BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”

原标题:BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”BIM研究的先驱、佐治亚理工教授Charles (Chuck) M. Eastman于本周一(11月9日)在其Atlanta家中逝世。特转韩国Yonsei大学Ghang Lee教授的讣文以作纪念。过世原因未说明。BIM的出现是与当今时代科技的发展分不开的。在信息时代建筑发展面临的挑战巨大:建筑物越建越高...

weixin_39941262的博客 3302

PAT 甲级 1066 平衡二叉树的创建

PAT 甲级 1066 Root of AVL Tree (25 分)平衡二叉树的创建 题目 这题主要考查了平衡二叉树的创建。除此之外还得一直保留二叉树的根节点。 由于此前对于平衡二叉树的创建比较模糊,故结合了严姥姥的教材写一篇博客加深一下自己对于平衡二叉树的创建的印象。 平衡二叉树概念 平衡二叉树是一种二叉排序树,将其不断调整为平衡二叉树是为了提高查找的效率。平衡二叉树的递归定义条件是: 对于...

努力不脱发的程序媛 294

【AI 赋能:Python 人工智能应用实战】16. BERT微调实战:中文新闻分类全流程(附模型蒸馏+ONNX部署完整代码)

中文新闻分类是NLP领域的经典实用任务,BERT模型凭借双向上下文建模能力,能有效解决中文歧义与长文本依赖问题,但存在推理速度慢、资源占用高的痛点。本文以THUCNews中文新闻数据集为核心,提供从数据预处理、BERT微调、模型蒸馏到生产部署的全流程实操指南。首先详解THUCNews的多编码读取与清洗(解决gbk/utf-8兼容问题);然后实现BERT微调,加入早停机制与混淆矩阵可视化,验证准确率达93.8%;接着用DistilBERT完成模型蒸馏,在仅损失0.6%准确率的前提下,将推理速度提升2.7倍。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1098

【数据集】ERA5(欧洲中期天气预报中心)再分析数据介绍及下载

简介EAR5数据集及下载步骤

WW、forever的博客 1万+

【PAT甲级】1066 Root of AVL Tree (25 分)

PAT甲级1066题解 第5个测试点未通过

小染的学习笔记 361

量化交易零基础入门教程

特点 从零开始教编程。靠谱的量化交易学习资源稀少,且具有不讲编程、代码较难、过多等不适合新手等问题,本教程中则会从零开始教编程,解决量化入门过难过编程门槛这一问题。 量化与编程相结合。本教程不仅会教编程,而且会尽量结合量化情景,减少“我要做量化交易为什么要看这些用来培训程序员的东西”的愤懑。 简易精炼,快速入门。尽量只讲最核心最常用的知识,助你快速摆脱想学习量化却处处陌生不知所措的茫然的新手阶段。 读前说明 文后会有自测与自学,包括一些额外的延伸自学内容以及稍有难度的自测题目。 最最最基础的股票.

JanLEE 2886

PAT A 1066(甲级)

1066 Root of AVL Tree(25 分) 作者: CHEN, Yue 单位: 浙江大学 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtree...

CrazyOnes的博客 386

UNET改进77:全网首发-添加CFBlock |

本文介绍了在UNet模型中集成CFBlock注意力机制的实现方法。主要分为三个步骤:1) 创建CFBlock模块,包含卷积注意力机制和MLP;2) 在UNet连接处添加注意力模块;3) 在卷积层中嵌入注意力机制。具体实现包括:定义Conv、MLP和ConvolutionalAttention等基础模块,构建CFBlock核心结构;在UNet跳跃连接处插入注意力模块;将注意力机制整合到DoubleConv和Down模块中。该方法通过在不同位置引入注意力机制,可有效提升模型的特征提取能力。代码实现使用PyTor

AIcurator的博客 388

基于C++和Qt开发IEC104规约主站调试软件(第二章)

本章节主要讲解iec104主站软件界面设计和从站的连接功能以及部分功能代码的展示。

半青年的博客 858

PAT 甲级 1066 JAVA

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class PAT1066 { public static class AVLTree { TreeNode root; private class TreeNode { int val; TreeNode left;

Zaaztt的博客 183

YOLOv8进阶实战:融合SAHI超推理算法,在无人机应用中精准捕捉视频与图片中的微小目标

YOLOv8改进是一种先进的目标检测算法,通过引入辅助超推理算法SAHI推理,使得小目标无法逃避检测。SAHI推理算法结合视频和图片的特点,利用先进的超推理技术,提高了目标检测的准确性和鲁棒性。不仅如此,YOLOv8改进还支持对视频和图片进行实时的目标检测,将检测结果直观地呈现给用户。这一技术的应用范围广泛,可以用于安防领域,提升监控设备的性能和效率;也可以用于无人驾驶领域,实现精准的目标识别和跟踪。总之,YOLOv8改进是一项具有突破性的技术,为目标检测领域带来了重大的进展。

weixin_51988935的博客 807

PAT甲级 A1066

PAT甲级 A1066 题目详情 1066 Root of AVL Tree (25分) An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to re

weixin_44065549的博客 170

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PAT(甲级)1066

题意:将一组数插进AVL树中,输出这棵树的根节点的值。 题解:AVL树四种旋转+AVL树的插入。 注意点:数据结构基础题 code in view #include<bits/stdc++.h> using namespace std; int n; struct node{ int val; node *left,*right; }; node* RightRotat...

qq_42836930的博客 188

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

PAT 甲级 1066 PAT Ranking 个人错误总结

avl有点繁杂,不好记。。 写了1h多。 #include<bits/stdc++.h> using namespace std; struct node{ int data; int h; node *lchild; node *rchild; }; node* newnode(int n){ node *root=new node; root->h=1; root->data=n; root->lchild=NULL; root->rchild=NU

☁的博客 131

PAT甲级 1066(C++)

对二叉树不太熟悉,看了这个大佬的代码:1066. Root of AVL Tree (25)-PAT甲级真题_柳婼 の blog-优快云博客 然后依葫芦画瓢写了一遍,里面用了很多递归,对指针的使用也要慎重思考(要不要用引用之类的……),相关的练的多了,应该就不用再花这么多时间考虑了。这题以后还要再看看,重新写写。 #include<iostream> using namespace std; struct node { int e; node* left; node* right;

weixin_45681165的博客 174

pat甲级1066(25分)c++

pat甲级1066(25分)c++ 类型:AVL树 #include <iostream> using namespace std; /* * 题目大意: * 输入: * 第一行: * N是结点总数 * 第二行: * N个整数 * 输出: * 当输入的结点构成一个AVL树时,输出相应的根结点 */ /* * node是结点的结构体 * val是结点的值,left和right分别是左孩子和右孩子 */ struct node { int val; stru

幽冥狐尊的博客 193

PAT甲级1066~1070|C++实现

PAT甲级1066 Root of AVL Tree (25分)|C++实现 PAT甲级1067 Sort with Swap(0, i) (25分)|C++实现 PAT甲级1068 Find More Coins (30分)|C++实现 PAT甲级1069 The Black Hole of Numbers (20分)|C++实现 PAT甲级1070 Mooncake (25分)|C++实现

weixin_42393947的博客 100

pat甲级1066 平衡二叉树的实现

平衡二叉树的构建,做个笔记吧 #include <cstdio> #include <algorithm> struct node{ int data, height; node *left, *right; }; node* newNode(int e); int getHeight(node *a); void updateHeight(node *...

sinat_37517996的博客 254

PAT甲级 1066 AVL树的根

原题链接 AVL树是一种自平衡二叉搜索树。 在AVL树中,任何节点的两个子树的高度最多相差 1 个。 如果某个时间,某节点的两个子树之间的高度差超过 1,则将通过树旋转进行重新平衡以恢复此属性。 图 1−4 说明了旋转规则。 现在,给定插入序列,请你求出 AVL 树的根是多少。 输入格式 第一行包含整数 N,表示总插入值数量。 第二行包含 N 个不同的整数,表示每个插入值。 输出格式 输出得到的 AVL 树的根是多少。 数据范围 1≤N≤20输入样例1: 5 88 70 61 .

赵小轩的博客 1923

PAT 甲级 1066  Root of AVL Tree

1066 Root of AVL Tree (25 point(s)) An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they di...

漫浸天空的雨色的备忘录~ 1044

PAT甲级 1066 Root of AVL Tree

当存在任一节点的平衡因子的绝对值大于或等于2时,要通过旋转来平衡左右子树,使其平衡因子绝对值小于或者等于1,这里旋转的意思是将“根节点”左侧或者右侧的节点作为“根节点”,并保证是搜索树或者排序树,平衡因子的定义是该节点左子树深度减去右子树深度。由于当左侧或者右侧添加节点时,可能导致平衡因子绝对值>=2,所以此时要根据情况,将挨着“根节点”的左节点或者右节点作为根节点,来平衡,为了保证是排序树,还要将左节点的右侧子树连到“根节点”的左侧, 或者将右节点的左侧子树连到“根节点”的右侧。...

邹九的个人博客 250

PAT甲级题解 1066

注意的是AVL树的操作 getHeight 各种旋转难度就会小一点 #include<bits/stdc++.h> using namespace std; struct node { int val; node* left; node* right; }; node* rotateleft(node* root) { node* temp = root -> right; root -> right = temp -> left;

zmh657628320的博客 102
上一篇: PAT甲级1099
下一篇: PAT甲级1098
zerohawk
博客等级 码龄8年 3粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值