[沉迷理论]进制链表树

往期文章推荐:

题解之最大子矩阵-CSDN博客

洛谷P1115最大子段和[神奇的题目]-CSDN博客

(一条神奇的分割线)


前言 

好久没有更新的我总算在百忙之中抽出时间写了篇博客。

最近总算结束了动态规划的学习,真的是头昏脑涨啊。

最近也是开始了进制,链表和树的学习,让我们来详细看看吧!

(一条神奇的分割线)


进制

在日常生活中,我们用的都是十进制。

但是这个世界上不只有十进制,还有二进制、四进制、五进制、八进制、十六进制......

那么不同进制怎么转换呢?其实我们把其他进制转换成十进制就能做题了。

十进制转化成N进制

用十进制数依次除以N,余数依次排列,最后除到不能再除,把余数倒着排列。

具体如下:

字不好看见谅......................................................................................

N进制转化成十进制:

从0开始,依次加当前数位上的数字乘N的第K-1次方(K代表当前数位)。

具体如下:

然后我们就可以解决不少关于进制加减的题目了。

补充一点位运算知识:

一张图讲明白。

与:两个必须都为真才为真

或 :一个为真即为真

非:两个都不为真即为真

异或:两个值不相同才为真

左移:在左边加上一个0

右移:删除左边的一个数

你学废了吗?

OK,去刷题吧!

关于进制就讲到这。

(一条神奇的分割线)


链表

链表是线性表的一种,线性表分为顺序表和链表两种实现方式。

顺序表可以理解为数组。

顺序表的优点是只需存放数据元素自身的信息;存储密度大;空间利用率高;存取速度快。

缺点则是需要实现分配存储空间;容易造成空间浪费(空间冗余);进行插入删除操作效率低。

顺序表就到这里!我们的主角是链表。

链表的概念:

用一组地址任意的储存单元(可以连续也可以不连续)依次储存线性表中的各个元素。

我们可以拿火车来做理解。(火车真的很像链表)

总结一下链表的优点:空间利用率高,插入删除操作便捷。

缺点:修改、查找麻烦。

链表的种类有单向链表、双向链表、循环链表。

单向链表:每个节点由两部分组成,元素自身信息即数据域(data),指向后继元素位置的信息称为指针域(link)。整个链表用list指出,以表明链表的首地址。链表为空时,list为null。

双向链表:除了数据域外有两个指针域,llink(左)指向前驱节点,rlink(右)指向后继节点。双向链表有循环线性和非循环线性。

循环链表:最后一个节点的指针指向链表的第一个链节点,整个链表形成一个循环,从表中任意节点出发均可找到表中其他节点。

在各位准备刷题之前记住一个坑点:有些节点被修改过了,所以后面的分析中要小心。

OK,在题海中漂泊吧!

关于链表就讲到这。

(一条神奇的分割线)


树可能是这三个里面最容易理解的了。

定义:树作为一种非线性的数据结构,是由n(≥0)个节点组成的有限集合。

如果n=0,那么这棵树为空树。

如果n>0,那么这棵树有个特定节点——根节点。说白了根节点就是所有节点的祖先。

根节点只有后继(儿子),没有前驱(父亲)。

接下来讲几个概念:

树的度:节点拥有子树的数量叫做节点的度,度为0的节点叫做叶节点。度不为0的节点叫做分支节点。树的度为这棵树中所有节点的度的最大值,就可以叫做几叉树。比如二叉树,就是每个节点的子树和子节点最多有两个。

树的前驱和后继:这个节点的父亲节点(很通俗)就是这个节点的前驱,每个节点的子节点就是这个节点的后继。节点孩子的孩子称为节点的孙子,节点成为子孙的祖先,同一个双亲的子节点之间互称兄弟。

树中节点的层次:树中根节点为第一层,根节点的孩子为第二层,以此类推。树中节点的最大层次成为树的深度或高度。

森林:n棵互不相交的树组成的集合叫森林。

然后我们讲一下树的性质:

1,除根节点没有父亲之外,其他节点有且仅有一个父亲。

2,n个节点的数,有且仅有n-1条边。

3,树中任意两个节点之间有且仅有一条简单路径。

OK,树就讲完了。

但是!

Wait a moment!

树中最精彩的部分才刚开始讲!

(一条神奇的分割线)


二叉树

二叉树其实是树的一种,但是它实在是太牛皮了,所以我要单独提溜出来讲。

二叉树是一种度数为2的数,就是每个节点的子节点最多有两个。每个节点的子节点分别称为左孩子,右孩子。两颗子树分别称为左子树,右子树。

鄙人目前只学到二叉树的遍历,就先讲到此处。

二叉树有四种遍历方式:

先序遍历:遍历顺序:根节点>左节点>右节点,优先级同上。

中序遍历:遍历顺序:左节点>根节点>右节点,优先级同上。

后序遍历:遍历顺序:左节点>右节点>根节点,优先级同上。

层次遍历:每一层从左到右遍历。

做题技巧:如果遇见给出某几种遍历的结果让你画出这棵树,牢记:后序遍历找根节点,中序遍历找左右节点。

最后,注意优先级问题!

OK,在题目中度过美好的一天吧!

(一条神奇的分割线)


后记

参考文献:

信息学奥赛一本通 初赛真题解析,一本通信息学名师工作室编著,南京大学出版社出版。

感谢阅览!烦请一键三连!Thanks♪(・ω・)ノ

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

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

相关文章

MySQl基础----Linux下搭建mysql软件及登录和基本使用(附实操图超简单一看就会)

绪论​ 涓滴之水可磨损大石,不是由于他力量强大,而是由于昼夜不舍地滴坠。 只有勤奋不懈地努力,才能够获得那些技巧。 ——贝多芬。新开MySQL篇章,本章非常基础包括如何在Linux上搭建(当然上面的SQL语句你在其他能执行…

初阶 《分支和循环语句》 3.循环语句

3.循环语句 while for do while 3.1 while循环 前面已经掌握了 if 语句: if(条件)   语句; 当条件满足的情况下,if语句后的语句执行,否则不执行;但是这个语句只会执行一次。 由于我们发现生活中很多的实际的例子是:同…

MYSQL 索引下推 45讲

刘老师群里,看到一位小友 问<MYSQL 45讲>林晓斌的回答 大意是一个组合索引 (a,b,c) 条件 a > 5 and a <10 and b123, 这样的情况下是如何? 林老师给的回答是 A>5 ,然后下推B123 小友 问 "为什么不是先 进行范围查询,然后在索引下推 b123?" 然后就…

Leetcode 力扣114. 二叉树展开为链表 (抖音号:708231408)

给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1&#xf…

欢乐打地鼠小游戏html源码

这是一款简单的js欢乐打地鼠游戏&#xff0c;挺好玩的&#xff0c;老鼠出来用鼠标点击锤它&#xff0c;击中老鼠获得一积分。 欢乐打地鼠小游戏html源码

不同数据库背后的数据存储方案

在大数据和AI时代&#xff0c;数据库成为各类应用不可或缺的重要组成部分。而数据库中的数据依赖存储引擎进行管理&#xff0c;包括数据的存储、查询、更新和删除等。因此&#xff0c;在设计系统时&#xff0c;选择正确的数据库存储引擎方案变得尤为重要。这篇文章将以关系型、…

滑动窗口算法:巧妙玩转数据的窗外世界

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 滑动窗口是什么&#xff1f; 二 相关题目解析 1. 长度最小的子数组 &#x1f973;题目解析 &#x1f973;算法原理 ✏️思路1 暴力枚举出所有子数组之和 ✏️思路2 滑动窗…

LabVIEW调用DLL时需注意的问题

在LabVIEW中调用DLL&#xff08;动态链接库&#xff09;是实现与外部代码集成的一种强大方式&#xff0c;但也存在一些常见的陷阱和复杂性。本文将从参数传递、数据类型匹配、内存管理、线程安全、调试和错误处理等多个角度详细介绍LabVIEW调用DLL时需要注意的问题&#xff0c;…

有趣的数学 为什么绝对值和模都用两个竖线表示?

绝对值和模都可以使用两个竖线表示&#xff0c;是因为它们在数学概念上有相似的性质&#xff0c;不过是应用场景不同。 绝对值&#xff08;Absolute Value&#xff09;&#xff1a; 绝对值是一个实数的非负值。它表示一个数在数轴上距离原点的距离。例如&#xff0c; 和 。 模&…

Hadoop3:MapReduce源码解读之Map阶段的TextInputFormat切片机制(3)

Job那块的断点代码截图省略&#xff0c;直接进入切片逻辑 参考&#xff1a;Hadoop3&#xff1a;MapReduce源码解读之Map阶段的Job任务提交流程&#xff08;1&#xff09; 5、TextInputFormat源码解析 类的继承关系 它的内容比较少 重写了两个父类的方法 这里关心一下泛型参数…

基于Java+SpringBoot制作一个软考助手答题小程序

基于Java+SpringBoot制作一个软考小助手考试答题小程序。其中系统前端功能包括注册登录、公告通知、考试答题、视频课程、考试记录、题库、题目评论、错题统计、我的收藏和用户信息管理模块;系统后台功能包括用户管理、题库管理、答题管理、学习视频管理以及系统管理模块。 摘…

WINUI——Behavior(行为)小结

前言 在使用MVVM进行WINUI或WPF开发时&#xff0c;Command在某些时候并不能满足逻辑与UI分离的要求。这时肯定就需要其它技术的支持&#xff0c;Behavior就是一种。在WPF中是有Behavior直接支持的&#xff0c;转到WINUI后&#xff0c;相对有一些麻烦&#xff0c;于是在此记录之…

RainBond 制作应用并上架【以ElasticSearch为例】

文章目录 安装 ElasticSearch 集群第 1 步:添加组件第 2 步:查看组件第 3 步:访问组件制作 ElasticSearch 组件准备工作ElasticSearch 集群原理尝试 Helm 安装 ES 集群RainBond 制作 ES 思路源代码Dockerfiledocker-entrypoint.shelasticsearch.yml制作组件第 1 步:添加组件…

搭建RocketMQ主从异步集群

搭建RocketMQ主从异步集群 1、RocketMQ集群模式 为了追求更好的性能&#xff0c;RocketMQ的最佳实践方式都是在集群模式下完成的。RocketMQ官方提供了三种集群搭建方式&#xff1a; 2主2从异步通信方式&#xff1a;使用异步方式进行主从之间的数据复制。吞吐量大&#xff0c;…

通过 AI Edge Torch 生成式 API 在设备上使用自定义大语言模型

作者 / 首席工程师 Cormac Brick&#xff0c;软件工程师 Haoliang Zhang 我们很高兴地发布 AI Edge Torch 生成式 API&#xff0c;它能将开发者用 PyTorch 编写的高性能大语言模型 (LLM) 部署至 TensorFlow Lite (TFLite) 运行时&#xff0c;从而无缝地将新的设备端生成式 AI 模…

[大模型]Gemma-2B-Instruct FastApi 部署调用

环境准备 在 平台中租赁一个 3090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch-->2.1.0-->3.10(ubuntu22.04)-->12.1。 接下来打开刚刚租用服务器的 JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下载和运行演示。 pip 换源加速下载…

[qt] qt程序打包以及docker镜像打包

目录 一 环境准备: 1.1 qt环境 1.2 linuxdeplouqt打包工具 二 qt包发布: 2.1 搜索链接库 2.2 应用程序APP打包 2.3 发布 三 docker镜像包发布 3.1 环境准备 3.2 镜像生产脚本 3.3 加载镜像并运行docker容器 一 环境准备: qt环境linuxdeployqt打包工具docker环境 1…

Python学习打卡:day01

day1 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 1、Python 软件&#xff08;PyCharm&#xff09; 安装&#xff1a;在 Linux 环境下安装 Pycharm 插件&#xff1a;汉化、翻译 设置字体大小 常用快捷…

【MySQL】(基础篇五) —— 排序检索数据

排序检索数据 本章将讲授如何使用SELECT语句的ORDER BY子句&#xff0c;根据需要排序检索出的数据。 排序数据 还是使用上一节中的例子,查询employees表中的last_name字段 SELECT last_name FROM employees;输出结果&#xff1a; 发现其输出并没有特定的顺序。其实&#xf…

【Linux】进程3——PID/PPID,父进程,子进程

在讲父子进程之前&#xff0c;我们接着上面那篇继续讲 1.查看进程 mycode.c makefile 我们在zs_108直接编译mycode.c&#xff0c;直接运行&#xff0c;然后我们转换另一个账号来查看这个进程 我们可以通过ps指令来查看进程 我们就会好奇了&#xff0c;第二行是什么&#xff…