Python学习笔记:Trie Tree的实现

本文深入探讨了Trie树的概念、实现原理及其在不同场景的应用。通过具体代码实例展示了如何构建Trie树并进行搜索操作,同时分析了Trie树在解决字符串匹配问题上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# Trie Tree 1

class TrieTree(object):
    def __init__(self, key=None, size=0):
        self.key = key
        self.size = size
        self.children = []
    def insert(self, word):
        node = self
        for i in range(len(word)):
            target = word[i]
            found = False
            node.size += 1
            for child in node.children:
                if child.key == target:
                    found = True
                    node = child
                    break
            if not found:
                child = TrieTree(target)
                node.children.append(child)
                node = child
    def search(self, word):
        node = self
        for i in range(len(word)):
            target = word[i]
            found = False
            for child in node.children:
                if child.key == target:
                    found = True
                    node = child
                    break
            if not found:
                return 0
        return node.size

def test():
    tt = TrieTree()
    tt.insert('babaab')
    tt.insert('babbbaaaa')
    tt.insert('abba')
    tt.insert('aaaaabaa')
    tt.insert('babaababb')
    print(tt.search('babb'))
    print(tt.search('bab'))
    print(tt.search('abb'))
    print(tt.search('aaaaa'))
    print(tt.search('babbbb'))

# Trie Tree 2

class TrieTree(object):
    def __init__(self):
        self.size = 0
        self.children = [None] * 26
    def insert(self, word):
        node = self
        for w in word:
            index = ord(w) - 97
            node.size += 1
            if node.children[index] == None:
                node.children[index] = TrieTree()
            node = node.children[index]
    def search(self, word):
        node = self
        for w in word:
            index = ord(w) - 97
            if node.children[index] == None:
                return 0
            else:
                node = node.children[index]
        return node.size


参考#1014 : Trie树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值