def bf_traverse(self): q = ArrayQueue() if self.r != self.nil: q.add(self.r) while q.size() > 0: u = q.remove() if u.left != self.nil: q.add(u.left) if u.right != self.nil: q.add(u.right)
def queue_to_stack(queue): '''Convert queue to stack, without modifying the queue peek of the stack must be first element of the queue''' stack = ArrayStack() queue_copy = ArrayQueue(queue) while len(queue_copy) != 0: stack.push(queue_copy.remove(len(queue_copy) - 1)) return stack
def level_order(self, visit): linked_binary_tree.visit = visit aq = ArrayQueue() curr_node = self.root while curr_node: visit(curr_node) if curr_node.lc: aq.put(curr_node.lc) if curr_node.rc: aq.put(curr_node.rc) curr_node = aq.remove()
def breadth_first_search(self, v, reach, label): aq = ArrayQueue() reach[v] = label aq.put(v) while not aq.is_empty(): w = aq.remove() p = self.adj_list[w].first_node while p: u = p.element.v if not reach[u]: aq.put(u) reach[u] = label p = p.next print(reach)