IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构及其拓展篇(二) -> 正文阅读

[数据结构与算法]数据结构及其拓展篇(二)

常用的数据结构分别有数组、堆栈、队列、链表、树、图、字典树、哈希表。

上一期的数据结构及其拓展篇数据结构及其拓展篇(一)中,我们讲过了数组(Array)—>集合ArrayList、栈(Stack)—>撤回、队列—>消息队列,那么今天我们就来讲讲链表和树。

一、链表

链表也是线性结构的,看起来和数组相似,但是他们的内存的分配方式、内部的结构以及插入和删除的方式都不一样。

相信大家都知道,数组的查找比较方便,可以直接通过下标查找,但是删除或者插入某些元素就比较麻烦了。链表却与之相反,删除和插入很快,但是查找元素却很慢。那么为了综合这两种的好处,就产生了树,这个我们待会讲。

链表是由一系列的节点组成的链,每一个节点保存了数据以及指向下一个节点的指针。链表头的指针指向下一个节点,如果链表为空,则头指针为空或者为null。链表可以用来实现文件系统、哈希表以及邻接表。链表又分为两种,一种是单向链表,一种是双向链表。链表的基本结构如下图所示:
在这里插入图片描述
如上是一个单向链表,Data代表的是数据,Pointer代表的是指针。正式因为链表在查询的时候会频繁地移动指针,所以才影响了它查找地效率。而在删除新增的时候直接改变指针的指向就可以很轻松地实现链表元素地插入删除。像Java中的LinkedList就是双向链表,在IDEA中也是可以看到源码的。

二、树

前面铺垫了那么多,终于要讲到树了,接下来我们一起来看看。

树的种类有很多种,像N叉树、平衡树、二叉树、二叉查找树、平衡二叉树、红黑树、2-3树。
首先看看树的结构元素组成:
在这里插入图片描述
如上图,是一个深度为3的树,节点1是没有父节点的节点叫做根节点,节点3是上一层的子节点,下一层的父节点,节点2、4、5、6是没有子节点的叶子节点

下面我们对各种节点的名词进行一个详细的解读:

节点的度: 一个节点含有的子树的个数称为该节点的度; 如上图:1的度为3。
叶节点: 度为0的节点叫做叶节点,如上图2、4、5、6。
非终端节点或分支节点: 度不为0的节点; 如上图:3为分支节点
双亲节点或父节点: 若一个节点含有子节点,则这个节点称为其子节点的父节点。如上图:3是5的父节点。
孩子节点或子节点: 一个节点含有的子树的根节点称为这个节点的子节点; 如上图:5是3的子节点。
兄弟节点: 具有相同父节点的节点互称为兄弟节点; 如上图:2、3、4是兄弟节点。
树的度: 一棵树中,最大的节点的度称为树的度; 如上图:树的度为3。
节点的层次: 从根开始定义起,根为第1层,根的子节点为第2层,以此类推;如上图有三层。
树的高度或深度: 树中节点的最大层次; 如上图:树的高度为3/深度为3。
堂兄弟节点: 双亲在同一层的节点互为堂兄弟;如上图:如果此时4有一个子节点7,那么5、6、7为堂兄弟节点。
节点的祖先: 从根到该节点所经分支上的所有节点;如上图:1是所有节点的祖先。
子孙: 以某节点为根的子树中任一节点都称为该节点的子孙。如上图,所有节点都是1的子孙。
森林: 由m棵互不相交的树的集合称为森林。

树的基本构成元素就是这些了,下一期着重为大家带来经常遇到的二叉树、二叉查找树以及红黑树,这几种树也是你们在面试中经常会被问到的哟。

树讲完以后我们在根据相应的数据结构讲一些基础的算法题练练手吧。

好了,今天的分享先到这里,咱们下期见!
在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:17:27  更:2021-09-05 11:18:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:30:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码