如需理解以下內(nèi)容,首先你需要了解樹的結(jié)構(gòu);
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、站前ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的站前網(wǎng)站制作公司pass
, 以該節(jié)點(diǎn)為結(jié)尾的數(shù)量為end
。next
pass
值加一,將末尾節(jié)點(diǎn)的end值加一。通過這種操作記錄所有經(jīng)過的數(shù)據(jù)記錄。insert
插入字符串,給前綴樹添加一組數(shù)據(jù)find
查找已存入的字符串個(gè)數(shù)findContain
輸入前綴查找已存在的前綴相同的字符串個(gè)數(shù)erase
從前綴樹中擦除一個(gè)字符串及其所存在數(shù)據(jù)insert
方法需要注意pass的數(shù)據(jù)增加erase
方法需要注意的是:pass == 0
時(shí),代表其下沒有任何可能存在的字符串,所以直接將整棵樹刪除即可;#includeusing namespace std;
//26 個(gè)小寫英文字母
#define NUMBER 26
// 節(jié)點(diǎn)的結(jié)構(gòu)
class TrieNode
{public:
int pass;
int end;
TrieNode* nexts[NUMBER];
TrieNode()
{pass = 0;
end = 0;
for (int i = 0; i< NUMBER; i++)
{ nexts[i] = nullptr;
}
}
~TrieNode()
{for (int i = 0; i< NUMBER; i++)
{ if (nexts[i]) delete nexts[i];
}
}
};
// 所調(diào)用的樹結(jié)構(gòu)
class TrieTree
{TrieNode* root = nullptr;
public:
TrieTree()
{root = new TrieNode();
}
// 插入
void insert(string word)
{TrieNode* cur = root;
cur->pass++;
for (int i = 0; i< word.size(); i++)
{
int num = word[i] - 'a';
if (cur->nexts[num] == nullptr)
{ cur->nexts[num] = new TrieNode();
}
cur = cur->nexts[num];
cur->pass++;
}
cur->end++;
}
//查找字符串?dāng)?shù)量
int find(string word)
{TrieNode* cur = root;
for (int i = 0; i< word.size(); i++)
{ int num = word[i] - 'a';
if (cur->nexts[num] == nullptr) return 0;
cur = cur->nexts[num];
}
return cur->end;
}
//查找前綴數(shù)量
int findContain(string word)
{TrieNode* cur = root;
for (int i = 0; i< word.size(); i++)
{ int num = word[i] - 'a';
if (cur->nexts[num] == nullptr) return 0;
cur = cur->nexts[num];
}
return cur->pass;
}
//刪除
bool erase(string word)
{if (find(word) == 0) return false;
TrieNode* cur = root;
for (int i = 0; i< word.size(); i++)
{ int num = word[i] - 'a';
if (cur->nexts[num]->pass<= 1)
{ delete cur->nexts[num];
cur->nexts[num] = nullptr;
return true;
}
cur = cur->nexts[num];
cur->pass--;
}
cur->end--;
return true;
}
};
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧