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.

你可能感兴趣的:(面试经验)