c++面试题(数据结构篇)

二叉搜索树:一个节点最多只允许两个子节点,任何节点的键值一定大于其左子树中的每个节点的键值,并小于其右子树中每个结点的键值。从左可以搜索到最小元素,从右可以搜索到最大元素。

红黑树:是一个平衡二叉查找树,只不过在每个结点上增加了结点的颜色标志,它能确保没有一条路径会比其它路径长出两倍。主要用来存储有序的数据,如STL中的set,map,效率非常高。

hashtable:哈希表就是一种根据键值来访问到值value的数据结构,它的核心思想在于哈希函数的实现上,按照关键字为每个元素分类,这些分类组成很多个桶,但是不能保证每个元素的关键字与函数值都是一一对应的,一般利用开链法解决地址冲突。

模板参数:value,key,hashfun,extractkey(从节点取出键值的方法)。

哈希表的冲突解决方式,哈希表在桶固定的情况下,时间复杂度,怎么优化,

多线程中哈希表保证线程安全,哈希表特别大,桶多的时候怎么加锁

hash_map:是利用hash函数,对KEY进行映射到不同区域(桶)进行保存。

插入过程:用key值通过hash函数得到hash值,然后得到桶号(一般都为hash值对桶数求模),存放KEY和VALUE在桶内。

取值过程:用KEY值通过hash函数得到hash值,然后得到桶号,比较桶的内部元素是否与key值相等,取出相等值的value.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值