搜尋 Trie樹的一種實現

2021-06-27 02:00:59 字數 815 閱讀 2520

trie樹也叫字典樹,搜尋樹等。

如圖所示

下面是用stl 的map來實現

class trie_item_c

trie_item_c(const char nm)

void set_name(const char nm)

trie_item_c * get_child(const char nm) }

bool find(const char* dic)

const char* temp = dic;

map::const_iterator it = children.find(*temp);

if(it == children.end())

return false;

return it->second->find(++temp);

} void print()

printf("\n");

} virtual ~trie_item_c() }

private:

mapchildren;

char name;

};

下面**是構建樹的過程

for(const char* dic = lst.first_string();dic;dic = lst.next_string())

//add one null child

temp->get_child('\0');

}

判斷乙個單詞是否在root中,只需要呼叫root->find("book");即可。



Trie樹 一種NB的資料結構

最近在做一些題的時候更加理解到為什麼有一句話叫做程式 演算法 資料結構,可能之前的一些題我用 最基本的資料型別加上一些 意想不到 的演算法就可以解決,但是往往一些問題,佐以精妙的資料結構能讓人事半功倍。字典樹,是一種 樹形結構 是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的 字串 但不僅限...

搜尋 一種分詞方法的實現

加上有一句話,thisisabook,要將之分成合適的單詞,假設有乙個字典,這個字典包含單詞。我剛看到這個需求,第一反應是用搜尋中的分詞方式,最大匹配法,後來經過高人指點,說不用,只需要遇到正確的單詞就分出來,然後又想到了回溯法,再次經高人指點,回溯也不需要,只需要遞迴即可。下面是簡單的實現 供參考...

Trie樹的實現

一 定義 trie,又稱字典樹,是一種用於快速檢索的二十六叉樹結構。典型的空間換時間 二 結構圖 三 原理 特別地 和二叉查詢樹不同,在trie樹中,每個結點上並非儲存乙個元素。四 性質 0 利用串的公共字首,節約記憶體 1 在trie樹上進行檢索總是始於根結點 2 根節點不包含字元,除根節點外的每...