32个java面试考点:数据结构与算法

知识点汇总

一、从搜索树到B+树

1.1 二叉搜索树

左节点都比自己小,右节点都比自己大。

时间复杂度:O(logN)

1.2 平衡二叉树

avl树

1.3 红黑树

特有规则:

扫描二维码关注公众号,回复: 5642037 查看本文章
  1. 每个节点不是红色就是黑色
  2. 根节点是黑色
  3. 每个叶子节点都是黑色的空节点
  4. 红色节点的两个字节点都是黑色的
  5. 任意节点到其叶节点的每条路径上都包含相同数量的黑节点

1.4 B树

B树是一种多叉树,也叫多路搜索树,适合用于文件索引上,减少磁盘IO次数,子节点存储最大数成为B树的阶,图中为2-3树。

m阶B树特点:

  1. 非叶节点最多有m棵子树。
  2. 根节点最少有两棵子树,非根非叶节点最少有m/2棵子树。
  3. 非叶节点保存的关键字个数等于该节点子树个数-1。
  4. 非叶节点保存的关键字大小有序。
  5. 节点中每个关键字左子树的关键字都小于该该关键字,右子树的关键字都大于该该关键字。
  6. 所有叶节点都在同一层。

查找:

  1. 对节点关键字进行二分查找。
  2. 如果找不到,进入对应的子树进行二分查找,如此循环。

1.5 B+树

B树的变种,拥有B树的特点

独有特点:

  1. 节点中的关键字与子树数目相同。
  2. 关键字对应的子树节点都大于等于该关键字,子树包含该关键字自身。
  3. 所有关键字都出现在叶节点之中。
  4. 所有叶节点都有指向下一个叶节点的指针。

搜索:只在叶节点搜索。

叶子节点保存关键字和对应的数据,非叶节点只保存关键字和指向叶节点的指针,同等关键字数量的B树和B+树,B+树更小。

更适合做索引系统,原因:

  1. 由于叶节点有指针项链,B+树更适合做范围检索。
  2. 由于非叶节点只保存关键字和指向叶节点的指针,B+树可以容纳更多的关键字,树层数变小,磁盘查询次数更低。
  3. B+树的查询效率比较稳定,查询所有关键字的路径相同。(MySQL索引就提供了B+树的实现方式)

二、字符串匹配问题

三、TopK问题

面试考察点

猜你喜欢

转载自blog.csdn.net/Mr_BJL/article/details/88073694