Trie树/字典树

@温叶博客  May 28, 2023

介绍

Tire树又称字典树/前缀树,具有如下特点

  • 根节点不包含字符 除根节点外每个节点只包含一个字符
  • 树的每一个路径都是一个字符串
  • 每个节点的子节点包含的字符都不相同

用途

  • 利用字符串的公共前缀来降低查找的时间,常用于搜索系统文本词频统计

实现

type TrieMap = {
  [key: string]: any;
} & { isEnd?: boolean };

class Trie {
  private map: TrieMap;

  constructor() {
    this.map = {};
  }

  insert(word: string): void {
    let map = this.map;
    // 不断向下深入
    for (let w of word) {
      if (map[w] === undefined) {
        map[w] = {};
      }
      map = map[w];
    }
    map.isEnd = true;
  }

  search(word: string): boolean {
    let map = this.map;
    for (let w of word) {
      if (map[w] === undefined) return false;
      map = map[w];
    }
    return map.isEnd === true;
  }

  startsWith(prefix: string): boolean {
    let map = this.map;
    for (let w of prefix) {
      if (map[w] === undefined) return false;
      map = map[w];
    }
    return true;
  }
}

添加新评论

  1. 这篇文章如同一首动人的乐章,触动了读者内心深处的柔软。

    Reply
  2. 字里行间流露出真挚的情感,让人感同身受,共鸣不已。

    Reply
  3. 平淡中见真章,质朴处显功力。

    Reply
  4. 韵律感强烈,朗读时如音乐流淌。

    Reply
  5. 情感真挚,直击人心,引发强烈共鸣。

    Reply
  6. 作者以非凡的视角解读平凡,让文字焕发出别样的光彩。

    Reply
  7. 作者的才华横溢,让这篇文章成为了一篇不可多得的艺术品。

    Reply
  8. 独特的构思和新颖的观点,让这篇文章在众多作品中脱颖而出。

    Reply