字典树 (Trie / 前缀树)

用于高效检索、插入和存储字符串集合的树形前缀数据结构

什么是字典树?

字典树(Trie,又称前缀树)是一种哈希树的变体。它的核心特点在于:

输入小写英文字母组成的单词(如 "cat", "car", "dog"),点击"插入单词"来观察它如何动态共享前缀并标记结尾。

C++ 核心代码对照

Trie (字典树) C++ 标准实现
class Trie {
private:
    struct TrieNode {
        TrieNode* children[26]; // 26个英文字母指针
        bool isEnd;             // 单词结尾标记

        TrieNode() {
            isEnd = false;
            for (int i = 0; i < 26; i++) {
                children[i] = nullptr;
            }
        }
    };

    TrieNode* root;

public:
    Trie() {
        root = new TrieNode();
    }

    // 插入单词
    void insert(string word) {
        TrieNode* curr = root;
        for (char c : word) {
            int idx = c - 'a';
            if (curr->children[idx] == nullptr) {
                curr->children[idx] = new TrieNode(); // 动态分裂创建新节点
            }
            curr = curr->children[idx]; // 沿着路径向下走
        }
        curr->isEnd = true; // 标记单词结束
    }

    // 查询完整单词是否存在
    bool search(string word) {
        TrieNode* curr = root;
        for (char c : word) {
            int idx = c - 'a';
            if (curr->children[idx] == nullptr) return false;
            curr = curr->children[idx];
        }
        return curr->isEnd; // 必须是完整的单词结尾
    }
};