1. 程式人生 > >c++面試題(資料結構篇)

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.