为什么需要 Trie?
你有没有想过,手机输入法怎么根据你敲的前几个字母,快速提示出所有可能的单词?搜索引擎又是如何瞬间补全搜索词的?这些功能背后常常有一种叫 Trie(字典树 / 前缀树) 的数据结构。
Trie 把每个单词拆成字符,按字符顺序建成一棵多叉树。从根节点出发,沿着字符路径走,就能判断一个字符串是否存在,或者是否存在以某段字符开头的单词。
和普通查找相比,Trie 的最大优势是:查找时间只和单词长度有关,和字典里有多少单词关系不大。
2026/7/13大约 7 分钟
你有没有想过,手机输入法怎么根据你敲的前几个字母,快速提示出所有可能的单词?搜索引擎又是如何瞬间补全搜索词的?这些功能背后常常有一种叫 Trie(字典树 / 前缀树) 的数据结构。
Trie 把每个单词拆成字符,按字符顺序建成一棵多叉树。从根节点出发,沿着字符路径走,就能判断一个字符串是否存在,或者是否存在以某段字符开头的单词。
和普通查找相比,Trie 的最大优势是:查找时间只和单词长度有关,和字典里有多少单词关系不大。
前面我们处理的大多是数字,但程序经常要处理文字,比如用户名、密码、文件名等。C 语言本身没有专门的“字符串类型”,字符串是用字符数组来表示的。
理解字符数组,对后面学习字符串处理、文件读写都很重要。
字符数组就是元素类型为 char 的数组:
char s[6] = {'H', 'e', 'l', 'l', 'o', '\0'};