首页 > 其他分享 >信息学奥赛初赛天天练-77-NOIP2015普及组-基础题2-二进制、连通图、最小生成树、链表、二叉树、完全二叉树

信息学奥赛初赛天天练-77-NOIP2015普及组-基础题2-二进制、连通图、最小生成树、链表、二叉树、完全二叉树

时间:2024-08-28 17:26:31浏览次数:13  
标签:连通 二进制 最小 初赛 链表 二叉树 节点

NOIP 2015 普及组 基础题2

4 在计算机内部用来传送、存贮、加工处理的数据或指令都是以( )形式进行的
A 二进制码
B 八进制码
C 十进制码
D 智能拼音码

5 下列说法正确的是( )
A CPU 的主要任务是执行数据运算和程序控制
B 存储器具有记忆能力,其中信息任何时候都不会丢失
C 两个显示器屏幕尺寸相同,则它们的分辨率必定相同
D 个人用户只能使用 Wifi 的方式连接到 Internet

12 有6 个顶点的连通图的最小生成树,其边数为( )
A 6
B 5
C 7
D 4

13 链表不具备的特点是( )
A 可随机访问任何一个元素
B 插入、删除操作不需要移动元素
C 无需事物估计存储空间大小
D 所需存储空间与存储元素个数成正比

17 如果根的高度为 1,具有 61 个结点的完全二叉树的高度为( )
A 5
B 6
C 7
D 8

2 相关知识点

1) 二进制

二进制(Binary)是一种计数系统,它只使用两个数字:0和1。它是计算机科学中最基本的数制,因为计算机内部的所有信息都是以二进制形式存储和处理的

在二进制系统中,每一位的权重是2的幂次方

最右边的位(最低位)的权重是2^0 = 1

从右向左数第二位的权重是2^1 = 2

从右向左数第三位的权重是2^2 = 4

以此类推

二进制数的表示方法是从右向左,每一位的数字乘以其对应的权重,然后将所有的结果相加。例如,二进制数1101转换为十进制数的计算过程如下

1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 8 + 4 + 0 + 1 = 13

2) 连通图

连通性

如果任意两点间存在路径,此图具有连通性

连通图

连通图是指在一个无向图中,任意两个顶点之间都存在一条路径,使得它们相互可达

3) 最小生成树

最小生成树(Minimum Spanning Tree,简称MST,在一个连通的无向图,最小生成树是指包含图中所有顶点的一棵树,且该树的所有边的权重之和最小

如下连通图,边对应数字为边权

对应的最小生成树如下

4) 链表

是一种常见的数据结构,它是由一系列节点(Node)组成,每个节点包含两部分:数据域和指针域。数据域用于存储数据,指针域用于存储下一个节点的地址。链表的第一个节点称为头节点(Head),最后一个节点称为尾节点(Tail),尾节点的指针域指向空(NULL)

链表占用空间大小,和链表的长度有关,没增加一个节点,增加一个数据节点和一个指针节点,存储空间和链表长度成正比

链表的插入删除,只需要改变指针的指向,不需要移动元素

随机存取

随机存取(直接存取,Random Access)指的是当存储器中的数据被读取或写入时,所需要的时间与该数据所在的物理地址无关

顺序存取

顺序存取 (Sequential Access)是一种按记录的逻辑顺序进行读、写操作的存取方法,所需要的时间与该数据所在的物理地址有关。

顺序存取表现为:在存取第N个数据时,必须先访问前(N-1)个数据

#include<bits/stdc++.h>
using namespace std;
/*
  随机存取、顺序存取 
*/ 
int a[10]={0,1,2,3,4,5,6,7,8,9}; 
int main(){
	cout<<a[9]<<endl;//随机读取下标为9的元素 输出 9  

	for(int i=0;i<10;i++){//顺序存储 逐一读取 
		cout<<a[i]<<" ";		
	}
	return 0;
}

数组可以随机以及顺序存取,而链表只能顺序存取

5 二叉树

每个结点至多拥有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒

例如下面是一棵二叉树

完全二叉树

除了最下层,其他每层都饱满,去除最后一层是一棵满二叉树,最下层的结点都集中在该层最左边的若干位置上

3 思路分析

4 在计算机内部用来传送、存贮、加工处理的数据或指令都是以( A )形式进行的
A 二进制码
B 八进制码
C 十进制码
D 智能拼音码

分析

计算机内部使用二进制码是因为它具有简单的逻辑电路实现,只有0和1两个状态,易于实现电子开关

5 下列说法正确的是( A )
A CPU 的主要任务是执行数据运算和程序控制
B 存储器具有记忆能力,其中信息任何时候都不会丢失
C 两个显示器屏幕尺寸相同,则它们的分辨率必定相同
D 个人用户只能使用 Wifi 的方式连接到 Internet

分析

A CPU(中央处理器)是计算机的核心部件,负责执行程序指令和处理数据。它的主要任务确实是执行数据运算和程序控制 正确
B 存储器确实具有记忆能力,但并非所有存储器中的信息任何时候都不会丢失。例如,RAM(随机存取存储器)在断电后会丢失其中的信息 错误
C 屏幕尺寸指的是显示器对角线的长度,而分辨率指的是屏幕上像素的数量。两个显示器即使屏幕尺寸相同,它们的分辨率也可能不同 错误
D 个人用户可以通过多种方式连接到Internet,包括但不限于Wi-Fi、有线网络(如以太网)、移动数据网络 错误
所以选A

12 有6 个顶点的连通图的最小生成树,其边数为( B )
A 6
B 5
C 7
D 4

分析

一个有n个顶点的树恰好有n-1条边
最小生成树是一个树结构,有n-1条边,具体为6-1=5条边
且这5条边的权值之和最小

13 链表不具备的特点是( A )
A 可随机访问任何一个元素
B 插入、删除操作不需要移动元素
C 无需事先估计存储空间大小
D 所需存储空间与存储元素个数成正比

分析

链表插入和删除只需要变更指针,不需要移动元素
链表按节点指针链接,不需要像数组提前预估内存空间,占用空间随着节点增加长度相应正比例增加
链表只能顺序访问,不能随机访问

17 如果根的高度为 1,具有 61 个结点的完全二叉树的高度为( B )
A 5
B 6
C 7
D 8

分析

完全二叉树,除最好一层外,其他层都是满的,第6层不满
高度为1 满二叉树 节点和为1 - 2^1-1=0
高度为2 满二叉树 节点和为3 - 2^2-1=3
高度为3 满二叉树 节点和为7 - 2^3-1=7
高度为4 满二叉树 节点和为15 - 2^4-1=15
高度为5 满二叉树 节点和为31 - 2^5-1=31
高度为6 满二叉树 节点和为63 - 2^6-1=63
61个节点在31~63之间,所以高度为6,前5层都是满的,第6层不满

标签:连通,二进制,最小,初赛,链表,二叉树,节点
From: https://www.cnblogs.com/myeln/p/18385194

相关文章

  • 二叉树的最近公共祖先
    ​​......
  • 3217. 从链表中移除在数组中存在的节点
    从链表中移除在数组中存在的节点给你一个整数数组nums和一个链表的头节点head。从链表中移除所有存在于nums中的节点后,返回修改后的链表的头节点。示例1:输入:nums=[1,2,3],head=[1,2,3,4,5]输出:[4,5]解释:移除数值为1,2和3的节点。示例2:输入:nums=[......
  • 82. 删除排序链表中的重复元素 II
    传送锚点:力扣给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输出:[]示例3:输入:head=[7,7,7,7],val=7输......
  • day13: 第六章 二叉树part01 |二叉树的前序遍历,后序遍历,中序遍历,(递归。层序(广度)跟
    二叉树递归三部曲:1.确定递归函数的参数和返回值。2.确定终止条件3.确定单层递归的逻辑144.二叉树的前序遍历:中左右,递归:classSolution{publicList<Integer>preorderTraversal(TreeNoderoot){List<Integer>res=newArrayList<Integer>();p......
  • 数据结构之链表
    C++中常见的数据结构-CSDN博客目录一、链表的定义二、链表的创建三、链表的遍历四、链表的插入五、链表的删除六、总结 链表是计算机科学中常见的一种数据结构,c/c++语言中也有着丰富的链表操作函数库。本文将从链表的定义、创建、遍历、插入、删除等多个方面进行详细......
  • 给自己复盘的随想录笔记-链表练习题(在整理ing)
    删除链表的倒数第N个节点双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。思路是这样的,但要注意一些细节。分为如下几步:推荐大家使用虚拟头结点,这样方便处理删除实际头结点的逻辑,定......
  • 数据结构链表(C语言版)
    链表定义链表是一种常见的基础数据结构,它由一系列节点(Node)组成,每个节点包含数据域和指向列表中下一个节点的指针(在双向链表中还会有指向前一个节点的指针)。链表的一个优点是它允许有效地在序列中插入和删除元素。节点(Node)一个节点通常包含两个部分:数据域(DataField):存储实......
  • 力扣刷题---链表专题(超详细解析!!!)
    文章目录题目203.移除链表元素876.链表的中间结点024.反转链表21.合并两个有序链表面试题02.04分割链表面试题02.02.返回倒数第K个节点023.相交链表题目203.移除链表元素题目链接这个题目有两种方法,第一种是创建新的链表,然后将原链表遍历一遍,跳过所有值为val的......
  • 234. 回文链表
    回文链表传送锚点:234.回文链表-力扣(LeetCode)给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。示例1:输入:head=[1,2,2,1]输出:true示例2:输入:head=[1,2]输出:false提示:链表中节点数目在范围[1,105]内0<=......
  • 二叉树的层序遍历 C++
    给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例2:输入:root=[1]输出:[[1]]示例3:输入:root=[]输出:[]classSolution{public:vector<vect......