最近在做一些題的時候更加理解到為什麼有一句話叫做程式=演算法+資料結構,可能之前的一些題我用
最基本的資料型別加上一些「意想不到」
的演算法就可以解決,但是往往一些問題,佐以精妙的資料結構能讓人事半功倍。
字典樹,是一種
樹形結構
,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的
字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是:利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比
雜湊樹高。trie樹再解決mou一類問題時真的是簡單又好用。關於它的簡單操作也不過是初始化,插入,查詢,刪除,下面依次給出一種簡單的實現,在實際遇到的問題中可能需要增加某種字段或者進行別的怎樣的擴充套件,這都是依題目而變的。
我們假設在這裡我們面向的是由26個小寫字母組成的字串。
//因為我們考慮的是由26個小寫字母組成的字串
//具體問題還可以再變化,而這種變化往往是最難的
#define max 26
using namespace std;
//定義trie樹的節點
typedef struct trie_nodetrie;
trie *r;//創造的trie樹的根節點的指標
void init()
}void insert(trie *root,char *word)
p->next[*word - 'a'] = temp;
}p = p->next[*word - 'a'];
word++;
}}bool search(trie *root,char *word)
p = p->next[word[i]-'a'];
}return true;
}void del(trie *root)
}free(root);
}
資料結構 TRIE樹
分類 data structure 2009 04 19 22 31 5425人閱讀收藏 舉報trie樹 trie樹就是字元樹,其核心思想就是空間換時間。舉個簡單的例子。給你100000個長度不超過10的單詞。對於每乙個單詞,我們要判斷他出沒出現過,如果出現了,第一次出現第幾個位置。這題當然可以用h...
資料結構 TRIE樹
trie樹 trie樹就是字元樹,其核心思想就是空間換時間。舉個簡單的例子。給你100000個長度不超過10的單詞。對於每乙個單詞,我們要判斷他出沒出現過,如果出現了,第一次出現第幾個位置。這題當然可以用hash來,但是我要介紹的是trie樹。在某些方面它的用途更大。比如說對於某乙個單詞,我要詢問它...
樹 一種資料結構(二)
通過樹形結構的構造,進行組合設計模式 composite 的實現 node作為基類 本身不持有資料,用於維護共同的節點結構 class node protected node size t id,boost shared ptrp parent p id id 通過建構函式傳遞進來的父類指標建立與其...