Exemplo n.º 1
0
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()
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
 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())
Exemplo n.º 4
0
 def test_no_element_in_queue(self):
     queue = Queue()
     self.assertTrue(queue.is_empty())