字典樹(多叉樹)

2021-09-29 16:23:16 字數 869 閱讀 3437

實現乙個 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 結點海量也會造成二叉樹的高度很大,會降低操作速度。二 ...