相关文章推荐
悲伤的小马驹  ·  shell解析json-腾讯云开发者社区-腾讯云·  1 年前    · 
安静的火腿肠  ·  mysql ...·  1 年前    · 
失眠的鞭炮  ·  python如何替换某列的值-掘金·  2 年前    · 
曾经爱过的墨镜  ·  二度创作_抖抖音·  2 年前    · 
长情的小马驹  ·  VBA程序报错,用调试三法宝,bug不存在的 ...·  2 年前    · 
Code  ›  Java面试考点4之数据结构开发者社区
数据结构 时间复杂度 算法与数据结构 红黑树
https://cloud.tencent.com/developer/article/1988123
无聊的猕猴桃
10 月前
马拉松程序员

Java面试考点4之数据结构

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
腾讯云架构师技术同盟
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 腾讯云架构师技术同盟
返回腾讯云官网
马拉松程序员
首页
学习
活动
专区
工具
TVP 腾讯云架构师技术同盟
返回腾讯云官网
社区首页 > 专栏 > Java面试考点4之数据结构

Java面试考点4之数据结构

作者头像
马拉松程序员
发布 于 2022-04-26 17:48:47
发布 于 2022-04-26 17:48:47
434 0
举报
文章被收录于专栏: 马拉松程序员的专栏

数据结构知识点

首先看数据结构的知识点都有哪些,如下图所示。

  1. 队列和栈是经常使用的数据结构,需要了解它们的特点。队列是先进先出,栈是后进先出。
  2. 表,包括很多种,有占用连续空间的数组、用指针链接的单向和双向链表,首尾相接的循环链表、以及散列表,也叫哈希表。
  3. 图,在特定领域使用的比较多,例如路由算法中会经常使用到,图分为有向图、无向图及带权图,这部分需要掌握图的深度遍历和广度遍历算法,了解最短路径算法。
  4. 树的内容,树一般用作查找与排序的辅助结构,剩下两个部分都和树有关,一个是二叉树,一个是多叉树。 多叉树包括 B 树族,有 B 树、B+ 树、B* 树,比较适合用来做文件检索;另外一个是字典树,适合进行字符串的多模匹配。 二叉树包括平衡二叉树、红黑树、哈夫曼树,以及堆,适合用于进行数据查找和排序。这部分需要了解二叉树的构建、插入、删除操作的实现,需要掌握二叉树的前序、中序、后序遍历。

算法知识点

来看算法部分的知识点汇总,如下图所示。

算法题的常用解题方法。

复杂度是衡量算法好坏的标准之一,我们需要掌握计算算法时间复杂度和空间复杂度的方法。计算时间复杂度的方法一般是找到执行次数最多的语句,然后计算语句执行次数的数量级,最后用大写 O 来表示结果。

常用的字符串匹配算法,了解不同算法的匹配思路。

排序也是经常考察的知识点,排序算法分为插入、交换、选择、归并、基数五类,其中快速排序和堆排序考察的频率最高,要重点掌握,需要能够手写算法实现。

常用的查找算法,包括二分查找、二叉排序树、B 树、Hash、BloomFilter 等,需要了解它们的适用场景,例如二分查找适合小数量集内存查找,B 树适合文件索引,Hash 常数级的时间复杂度更适合对查找效率要求较高的场合,BloomFilter 适合对大数据集进行数据存在性过滤。

详解二叉搜索树

二叉搜索树

如下图所示,二叉搜索树满足这样的条件,每个节点包含一个值,每个节点至多有两个子树。每个节点左子树节点的值都小于自身的值,每个节点右子树节点的值都大于自身的值。

二叉树的查询时间复杂度是 log(N),但是随着不断的插入、删除节点,二叉树的树高可能会不断变大,当一个二叉搜索树所有节点都只有左子树或者都只有右子树时,其查找性能就退化成线性的了。

平衡二叉树

平衡二叉树可以解决上面这个问题,平衡二叉树保证每个节点左右子树的高度差的绝对值不超过 1,例如 AVL 树。AVL 树是严格的平衡二叉树,插入或删除数据时可能经常需要旋转来保持平衡,比较适合插入、删除比较少的场景。

红黑树

红黑树是一种更加实用的非严格的平衡二叉树。红黑树更关注局部平衡而非整体平衡,确保没有一条路径会比其他路径长出 2 倍,所以是接近平衡的,但减少了许多不必要的旋转操作,更加实用。前面提到过,Java 8 的 HashMap 中就应用了红黑树来解决散列冲突时的查找问题。TreeMap 也是通过红黑树来保证有序性的。

红黑树除了拥有二叉搜索树的特点外,还有以下规则,如下图所示。

每个节点不是红色就是黑色。

根节点是黑色。

每个叶子节点都是黑色的空节点,如图中的黑色三角。

红色节点的两个子节点都是黑色的。

任意节点到其叶节点的每条路径上,包含相同数量的黑色节点。

详解 B 树

B 树

B 树是一种多叉树,也叫多路搜索树。B 树中每个节点可以存储多个元素,非常适合用在文件索引上,可以有效减少磁盘 IO 次数。B 树中所有结点的最大子节点数称为 B 树的阶,如下图所示是一棵 3 阶 B 树,也叫 2-3 树。

一个 m 阶 B 树有如下特点:

  • 非叶节点最多有 m 棵子树;
  • 根节点最少有两个子树,非根、非叶节点最少有 m/2 棵子树;
  • 非叶子结点中保存的关键字个数,等于该节点子树个数−1,就是说一个节点如果有 3棵子树,那么其中必定包含 2 个关键字;
  • 非叶子节点中的关键字大小有序,如上图中左边的节点中 37、51 两个元素就是有序的;
  • 节点中每个关键字的左子树中的关键字都小于该关键字,右子树中的关键字都大于该关键字。如上图中关键字 51 的左子树有 42、49,都小于 51,右子树的节点有 59,大于51;
  • 所有叶节点都在同一层。

B 树在查找时,从根结点开始,对结点内的有序的关键字序列进行二分查找,如果找到就结束,没有找到就进入查询关键字所属范围的子树进行查找,直到叶节点。

总结一下:

  • B 树的关键字分布在整颗树中,一个关键字只出现在一个节点中;
  • 搜索可能在非叶节点停止;
 
推荐文章
悲伤的小马驹  ·  shell解析json-腾讯云开发者社区-腾讯云
1 年前
安静的火腿肠  ·  mysql sum有别名吗_mob64ca12eb3858的技术博客_51CTO博客
1 年前
失眠的鞭炮  ·  python如何替换某列的值-掘金
2 年前
曾经爱过的墨镜  ·  二度创作_抖抖音
2 年前
长情的小马驹  ·  VBA程序报错,用调试三法宝,bug不存在的-腾讯云开发者社区-腾讯云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号