實現乙個 trie (字首樹),包含 insert, search, 和 startswith 這三個操作。
示例:
trie trie = new trie();
你可以假設所有的輸入都是由小寫字母 a-z 構成的。
保證所有輸入均為非空字串。
總結:
這道題是字典樹的應用,在做這道題時花了不少時間,但是確實這個不是什麼難題,但是忘記了自定義鍊錶的建立,這個確實是不該。
學習中發現的問題與知識點:
1.結構體可以書寫建構函式(方便初始化節點)
2.鍊錶忽略頭節點可以更加方便鍊錶的操作。
#include
using
namespace std;
//字典樹的節點
struct node};
class
trie
return n;
}public
://初始化字典樹
trie()
//向字典樹插入乙個單詞
void
insert
(string word)
else}}
//查詢word是否存在於樹中
bool
search
(string word)
return0;
}//查詢prefix是否為某乙個詞的字首
bool
startswith
(string prefix)
return0;
}};int
main()
利用多叉樹(字典樹)實現簡單的快速搜尋
看到題目第一時間想到樹,而且是多叉樹。為什麼呢?然後我們換個想法,我們可以先把單詞按照字母為單位分割,然後第1個字母在樹的第一層搜尋,若不存在該字母則新增該字母為本層的兄弟節點,存在該字母就選擇第2個字母,跳到下一層的首節點,再逐個搜尋,若不存在該字母則新增該字母為本層的兄弟節點,存在該字母就選擇第...
多叉樹轉二叉樹
多叉樹的根結點為二叉樹的根,多叉樹的結點的第乙個兒子變成二叉樹對應結點的左孩子,多叉樹的結點的右兄弟變成二叉樹種該結點的右孩子。如下 c語言 01 include 02 include 03 include 04 include 0506 typedef struct treenode treeno...
多路查詢樹 多叉樹和B樹
一 二叉樹存在的問題 二叉樹需要載入到記憶體,若二叉樹的結點少沒有什麼問題,但是若二叉樹的節點很多 比如1億 可能存在如下問題 1 在構建二叉樹時,需要多次進行 i o 操作 海量資料存在資料庫或檔案中 結點海量,構建二叉樹時速度有影響 問題2 結點海量也會造成二叉樹的高度很大,會降低操作速度。二 ...