前缀树模板
0X00 模板
创建 trie
trie = {}
for word in words:
p = trie
for idx, c in enumerate(word):
p = p.setdefault(c, {})
p['#'] = word
【前缀树模板】
注意这里的 # 记录的是上一轮的单词
BFS
# BFS 遍历
from collections import deque
deq = deque([trie])
words = []
while deq:
n = deq.popleft()
if '#' in n:
words.append(n['#'])for k, v in n.items():
if k != "#":
deq.append(v)
DFS
# 搜索所有单词
def dfs(node, words):
if '#' in node:
words.append(node['#'])
if len(node) == 1: returnfor k, v in node.items():
if k != "#":dfs(v, words)
推荐阅读
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- opencv|opencv C++模板匹配的简单实现
- java中如何实现重建二叉树
- 种树郭橐驼传(文言句式+古今异义+词类活用+通假字)
- 白杨树
- 08黑龙江迟淑荣弯柳树网络学院第五期学习赵宗瑞老师主讲的(传统文化与身心健康)教育体系心得体会
- [原创]能见沂山一棵树,胜读十年无用书!
- 涵养字外功
- 2018.07.07《刺杀骑士团长》村上春树
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)