字典樹:很強大的資料結構,實現多個字串的查詢、對其個數的紀錄以及對其子串的查詢。
這裡講下建樹過程:
準備:max 記錄總節點數目
char str[1010][50];//輸入的字串集
int ch[max][30];//字典樹的實現
int word[max];//記錄當前節點下有多少個單詞
int val[max];//標記單詞節點
int sz;//節點數
初始化:
void init()
返回字元的ascll碼值:
int idx(char x)
插入字串:
void insert(char *s)
u = ch[u][c];
word[u]++;//單詞數加一
} val[u] = 1;//標記單詞節點
}
查詢以字串s為字首的字串 在字串集中有多少個
int findnum(char *s)//查詢以該s為字首的字串有多少個
return word[u];
}
查詢並輸出字串在串集裡面唯一確定的最短字首 :
void findprefix(char *s)
}
判斷該字串是不是串集裡某個字串字首 :
bool judgeprefix(char *s)
return false;//是字首
}
判斷字串是否由串集裡的兩個字串構成: 假設該字串分s1,s2兩部分,這裡只實現s1的查詢
bool finds(char *s)
return val[u];//最後乙個是不是單詞節點
}
大模板:
#include #include #define max 50000+10
using namespace std;
char str[1010][50];//輸入的字串集
int ch[max][30];//字典樹的實現
int word[max];//記錄當前節點下有多少個單詞
int val[max];//標記單詞節點
int sz;//節點數
int idx(char x)
void init()
void insert(char *s)
u = ch[u][c];
word[u]++;//單詞數加一
} val[u] = 1;//標記單詞節點
}//查詢以字串s為字首的字串 在字串集中有多少個
int findnum(char *s)//查詢以該s為字首的字串有多少個
return word[u];
} //查詢並輸出字串在串集裡面唯一確定的最短字首
void findprefix(char *s) }
//判斷該字串是不是串集裡某個字串字首
bool judgeprefix(char *s)
return false;//是字首
} //判斷字串是否由串集裡的兩個字串構成:假設該字串分兩部分,這裡只實現一部分的查詢
bool finds(char *s)
return val[u];//最後乙個是不是單詞節點
}
字典樹模板
字典樹,又稱單詞查詢樹,trie樹,是一種樹形結構,典型應用是用於統計,排序和儲存大量的字串,所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來節約儲存空間,最大限度的減少無謂的字串比較,查詢效率比雜湊表高。字典樹的應用 字串的快速檢索 雜湊最長公共字首 include usi...
字典樹模板
package template public class triemod trie root new trie for string s str if find root,asdf else public static void insert final trie root,string str ...
字典樹模板
字典樹 字典樹,又稱單詞查詢樹,trie樹,是一種樹形結構,雜湊表的乙個變種。用於統計,排序和儲存大量的字串 也可以儲存其 的 優點就是利用公共的字首來節約儲存空間。在這舉個簡單的例子 比如說我們想儲存3個單詞,nyist nyistacm nyisttc。如果只是 單純的按照以前的字元陣列儲存的思...