数据结构常规面试题(三玖天下第一)(二)

1.数据结构中头结点和头指针的区别是什么?

答:头节点和头指针是链表数据结构中的表示,头结点是一个链表结构实体的一部分,但是不存数据或者有时存储数据但是没有意义,head node只为了简化操作而存在,有了头结点,第一个真正的节点就是head->next。头指针是指向链表第一个节点的指针,可以指向头结点(头结点存在时)或者是链表中实际存在的第一个节点,主要作用是标识链表的起始位置。通过头指针就可以遍历所有的节点。即使是个空链表,头指针也存在,只是指向了null。

2.哈希表是什么,有什么优缺点吗?

答:散列表,通过哈希函数将键映射到数据存储位置,以便快速访问和插入和删除。

哈希表可以做到快速的插入和查询,相较于其他数据结构,哈希表可以以较小的空间存储大量数据,支持键值对存储(key-value)且可以动态扩容

但是哈希表存在哈希冲突问题,不同的键可能会映射到同一个索引值,而且哈希表不适合需要顺序访问的数据,因为他没有顺序结构,外加他虽然支持动态扩容,但是当扩容时,需要哈希所有元素,这可能引起性能瓶颈。

3.哈希表冲突了怎么办,什么情况下是适用哈希表

答:当不同的键经过哈希函数计算后映射的同一个索引位置时,会发生哈希表冲突。有人觉得哈希函数很像密码加密,但是它是一种单向的,不可逆的过程,它将任意长度的输入数据转换为固定长度的输出(哈希值),生成的不是密码,而是指纹(元素的间接寻址),你根本不知道他保存的原始信息是什么,他更关注数据的完整程度和唯一性标识。如果哈希冲突了,那么可以设计更好的哈希函数或者换哈希函数,或者将哈希表分为基本表和溢出表,当发生冲突时,一个放这,一个放那。链地址法开放定址法

哈希表在需要快速访问、或者存储建对值(唯一性)、去重(唯一性)等场景。其可以根据哈希函数得到的结果定位数组中的位置指针,哈希函数转换后的哈希值作为哈希表的键使用。

4.你知道前缀、中缀、后缀是什么吗?

答:中缀 A+B,前缀(波兰表示法) +AB(A+B)或*+345((3+4)*5),后缀(波兰逆表示法)AB+(A+B)或34+5*((3+4)*5),前缀和后缀的区别在于符号在前在后。

5.你知道排序(搜索)二叉树(BST)和前缀树吗?

答:排序二叉树即是二叉搜索树,其有如下特性:

非空左子树的所有键值小于其根节点的键值,非空右子树的所有键值大于其根节点的键值且左右字数都为二叉搜索树,则其最小键值为左子树的最左节点,最大键值为右子树的最右节点。如下图按按中序排列(左子节点-跟节点-右子节点)为7->10->5->18->20->22,其结果不为二叉搜索树,按二叉搜索树应为5->7->10->18->20->22。

前缀树解释比较复杂的树类型,它是一种用于村塾关键字集合的树形数据结构,可参考前缀树是什么 前缀树的使用场景-CSDN博客

6.平衡二叉树是什么,有什么优缺点吗?

答:平衡二叉(AVL)树在排序二叉树的基础上,增加了新的特性,其每个子树的子至多只有一层的位差。可点击:数据结构之——平衡二叉树(内容详解)-CSDN博客

AVL由于树的高度统一,因此查找等操作的最坏结果是O(logN)且在插入等操作后仍能保持稳定性。但是为了维持平衡,其每次插入和删除都需要旋转操作来实现,因此代码实现逻辑较为复杂。

7.你知道红黑树吗,哪些数据使用红黑树作为底层结构的?(PS:一般不会考这玩意)

:红黑树是一种自平衡的二叉查找树,他通过在每个节点上增加一个存储位来表示节点的颜色(红-黑),以此维护树的平衡性,从而保证查找等操作的复杂度。

红黑树的节点只有黑色或红色,根节点是黑色,所有的叶子节点(null节点、空节点)为黑色。

如果一个节点为红色,那么他的两个子节点是黑色(红节点不可相邻)

从任意节点到其每个叶子的所有路径都包含相同数目的黑节点

在c++的STL中,std::map、std::set、std::multimap、std::multset默认都是红黑树作为底层架构。

8.平衡二叉树和红黑树有什么异同吗?

答:两者都是平衡的二叉树,都保持了对数据的快速访问,广泛应用于数据的插入,查找等应用(譬如数据库)

两种树的平衡方式不同,且操作复杂度实际上AVL等树的复杂度更高。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值