class StackUsingQueue(object): def __init__(self): self._queue_one = Queue() self._queue_two = Queue() def __str__(self): return self._queue_one.__str__() def push(self, element): ''' :param element: element to be pushed onto stack ''' while not self._queue_one.is_empty(): self._queue_two.enqueue(self._queue_one.dequeue()) self._queue_one.enqueue(element) while not self._queue_two.is_empty(): self._queue_one.enqueue(self._queue_two.dequeue()) return def pop(self): return self._queue_one.dequeue()
def level_order_traverse(root): if root is None: return queue = Queue() queue.enqueue(root) while not queue.is_empty(): node = queue.dequeue() print node, if node.lchild is not None: queue.enqueue(node.lchild) if node.rchild is not None: queue.enqueue(node.rchild) print
def test_enqueue_five_elements_to_queue_and_dequeue_all_elements(self): queue = Queue() langs = ['python', 'java', 'ruby', 'php', 'go'] for lang in langs: queue.enqueue(lang) self.assertEqual(len(langs), queue.size()) element1 = queue.dequeue() element2 = queue.dequeue() element3 = queue.dequeue() element4 = queue.dequeue() element5 = queue.dequeue() self.assertEqual('python', element1) self.assertEqual('java', element2) self.assertEqual('ruby', element3) self.assertEqual('php', element4) self.assertEqual('go', element5) self.assertTrue(queue.is_empty())
def test_no_element_in_queue(self): queue = Queue() self.assertTrue(queue.is_empty())