数据结构----字典树(python实现)

之前刷leetcode的时候看到一题用字典树来解决的题leetcode820.
觉得这个字典树挺有意思的,记录一下
字典树是一颗多叉树,

看上图的字典树,每一条路径都能找到一个单词,end=True的地方说明从根节点到该节点这段路也能找到一个单词,上面的这颗字典树可以找到[‘apple’,‘app’,‘bee’,‘bar’,‘car’]中的单词,但是找不到‘ap’这样的字符。
那么字典树能干嘛呢?
1、自动补全
数据结构----字典树(python实现)_第1张图片
2、检查拼写
word里边就有这功能
数据结构----字典树(python实现)_第2张图片
3、手机打字预测

下面我用python来实现一下简单的字典树的插入和查找功能

class TreeNode():
    def __init__(self):
        self.child = {}  
        self.is_end = False

class Trie():
    def __init__(self):
        self.root = TreeNode()

    def insert(self, word):
        node = self.root
        for s in word:
            if s not in node.child:
                node.child[s] = TreeNode()
            node = node.child[s]
        node.is_end = True

    def search(self, word):
        node = self.root
        for s in word:
            if s not in node.child:
                return False
            node = node.child[s]
        return node.is_end
model = Trie()
for word in ['apple','app','bee','bar','car']:
    model.insert(word)
print("apple的查找结果", model.search('apple'))
print("be的查找结果", model.search('be'))

数据结构----字典树(python实现)_第3张图片
常总结常进步,希望能和大家多多交流

你可能感兴趣的:(数据结构----字典树(python实现))