PHP 生成 Trie 树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 生成 Trie 树相关的知识,希望对你有一定的参考价值。

将所有敏感词生成 Trie 树结构,便于做敏感词检测,生成代码如下

class TrieNode
{

    private static $TrieTree;

    public function __construct()
    {
        static::$TrieTree = [];
    }

    public function insert($sensWords): TrieNode
    {
        $words = preg_split(‘//u‘, $sensWords, -1, PREG_SPLIT_NO_EMPTY);
        $_tree =  &static::$TrieTree;
        foreach ($words as $key => $_word) {
            if (!isset($_tree[$_word])) {
                $_tree[$_word] = [
                    ‘isEnd‘ => !isset($words[$key + 1]),
                    ‘child‘ => []
                ];
            }
            $_tree = &$_tree[$_word][‘child‘];
        }
        return $this;
    }

    public function getTree()
    {
        return static::$TrieTree;
    }
}

$treeNode = (new TrieNode)->insert(‘CNM‘)->insert(‘MLGB‘)->insert(‘WRNM‘)->getTree();
echo json_encode($treeNode,JSON_UNESCAPED_UNICODE);

以上是关于PHP 生成 Trie 树的主要内容,如果未能解决你的问题,请参考以下文章

CF888GXor-MST Trie树(模拟最小生成树)

51Nod1601 完全图的最小生成树计数 Trie Pruffer编码

数据结构trie树

数据结构—前缀树Trie的实现原理以及Java代码的实现

HDU 1075 What Are You Talking About (Trie树)

hdu 1251 统计难题(字典树)