題目描述:實作前綴樹(Trie),支援 insert(插入單詞)、search(搜尋單詞)、startsWith(搜尋前綴)三種操作。
解題思路:每個 Trie 節點含 26 個子指標(對應 a-z)和一個布林值 isEnd 標記單詞結束。insert:沿路徑建立不存在的節點,最後標記 isEnd。search:走完整個單詞,確認最後節點的 isEnd。startsWith:只需走完前綴,不需要 isEnd。
時間複雜度:O(L) 每次操作,L 為字串長度。
空間複雜度:O(total characters × 26) — 每個字元節點含 26 個子指標。
Insert(word): 1. curr = root 2. For each char c: create node if missing, advance curr 3. Mark curr.isEnd = true Search(word): 1. curr = root 2. For each char c: if child missing return false; else advance 3. Return curr.isEnd StartsWith(prefix): Same as search but return true at end
陣列(固定字母表)O(26) per node:用陣列替換雜湊表,快速但浪費稀疏字母表的空間。
Ternary search tree: 三元樹,中間節點分裂為小于、相等、大于 — 空間效率更優但實現複雜。
. (Word Search II)?