题目描述:
Implement a trie with insert, search, and startsWith methods.
Note:
You may assume that all inputs are consist of lowercase letters a-z.
题目大意:
实现字典树,包含插入,查找和前缀查找方法。
注意:
你可以假设所有的输入只包含小写字母a-z
解题思路:
本题考查字典树数据结构的基础知识。
Trie使用孩子表示法存储,TrieNode为字典树的节点,包含属性childs和isWord。
其中childs为dict,存储当前节点的后代节点;isWord为布尔值,表示当前节点是否存储了一个单词。
Python代码:
class TrieNode:
# Initialize your data structure here.
def __init__(self):
self.children = dict()
self.isWord = False
class Trie:
def __init__(self):
self.root = TrieNode()
# @param {string} word
# @return {void}
# Inserts a word into the trie.
def insert(self, word):
node = self.root
for letter in word:
child = node.children.get(letter)
if child is None:
child = TrieNode()
node.children[letter] = child
node = child
node.isWord = True
# @param {string} word
# @return {boolean}
# Returns if the word is in the trie.
def search(self, word):
node = self.root
for letter in word:
node = node.children.get(letter)
if node is None:
return False
return node.isWord
# @param {string} prefix
# @return {boolean}
# Returns if there is any word in the trie
# that starts with the given prefix.
def startsWith(self, prefix):
node = self.root
for letter in prefix:
node = node.children.get(letter)
if node is None:
return False
return True
# Your Trie object will be instantiated and called as such:
# trie = Trie()
# trie.insert("somestring")
# trie.search("key")
本文链接:http://bookshadow.com/weblog/2015/05/08/leetcode-implement-trie-prefix-tree/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。