-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrie.py
52 lines (38 loc) · 1.18 KB
/
trie.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class Node:
def __init__(self):
self.children = {}
self.value = None
def __str__(self):
s = "\nnode value:" + str(self.value)
for key in self.children.keys():
s += ", key: " + key
return s
class Trie:
def __init__(self, root):
self.root = root
def insert(self, node, key, value):
if node == None:
return self.insert(Node(), key, value)
if len(key) == 0:
node.value = value
return node
if key[0] not in node.children:
node.children[key[0]] = None
node.children[key[0]] = self.insert(node.children[key[0]], key[1:], value)
return node
def look_up(self, node, key):
if node == None:
return None
if len(key) == 0:
return node.value
return self.look_up(node.children[key[0]], key[1:])
def traverse(self, node, s):
s += str(node)
for key in node.children.keys():
s = self.traverse(node.children[key], s)
return s
def print(self, node):
s = "children= ["
s += self.traverse(node, s)
s += "\n]. END"
print(s)