26
26
Insert: LL O(1), BST O(log n) cuz of traversal
27
27
LL is very quick with appending, no other DS beats it
28
28
'''
29
+ import Queue
29
30
30
31
31
32
class Node :
@@ -129,16 +130,15 @@ def delete_node(self, value):
129
130
130
131
def bfs (self ):
131
132
current_node = self .root
132
- queue = []
133
+ queue = Queue . Queue ( current_node )
133
134
results = []
134
- queue .append (current_node )
135
- while queue :
136
- current_node = queue .pop (0 )
135
+ while queue .length :
136
+ current_node = queue .dequeue ()
137
137
results .append (current_node .value )
138
138
if current_node .left :
139
- queue .append (current_node .left )
139
+ queue .enqueue (current_node .left )
140
140
if current_node .right :
141
- queue .append (current_node .right )
141
+ queue .enqueue (current_node .right )
142
142
return results
143
143
144
144
def dfs_preorder (self ):
@@ -155,7 +155,30 @@ def traverse(current_node):
155
155
return results
156
156
157
157
def dfs_postorder (self ):
158
- pass
158
+ results = []
159
+
160
+ def traverse (current_node ):
161
+ if current_node .left :
162
+ traverse (current_node .left )
163
+ if current_node .right :
164
+ traverse (current_node .right )
165
+ results .append (current_node .value )
166
+
167
+ traverse (self .root )
168
+ return results
169
+
170
+ def dfs_inorder (self ):
171
+ results = []
172
+
173
+ def traverse (current_node ):
174
+ if current_node .left :
175
+ traverse (current_node .left )
176
+ results .append (current_node .value )
177
+ if current_node .right :
178
+ traverse (current_node .right )
179
+
180
+ traverse (self .root )
181
+ return results
159
182
160
183
161
184
bst = BinarySearchTree ()
@@ -166,4 +189,4 @@ def dfs_postorder(self):
166
189
bst .r_insert (27 )
167
190
bst .r_insert (52 )
168
191
bst .r_insert (82 )
169
- print (bst .dfs_preorder ())
192
+ print (bst .dfs_inorder ())
0 commit comments