def test_length(self):
     q = DeQueue()
     assert q.length() == 0
     q.enqueue_back('A')
     assert q.length() == 1
     q.enqueue_front('B')
     assert q.length() == 2
     q.dequeue_front()
     assert q.length() == 1
     q.dequeue_back()
     assert q.length() == 0
 def test_enqueue(self):
     q = DeQueue()
     q.enqueue_back('B')
     assert q.front() == 'B'
     assert q.length() == 1
     q.enqueue_back('C')
     assert q.front() == 'B'
     assert q.length() == 2
     q.enqueue_front('A')
     assert q.front() == 'A'
     assert q.length() == 3
     assert q.is_empty() is False
Пример #3
0
 def _traverse_level_order_iterative(self, start_node, visit):
     """Traverse this binary tree with iterative level-order traversal (BFS).
     Start at the given node and visit each node with the given function.
      Running time: O(n) Why and under what conditions?
      Memory usage: O(n) Why and under what conditions?"""
     # Create queue to store nodes not yet traversed in level-order
     """Remove and return the item at the back of this queue,"""
     queue = DeQueue()
     queue.enqueue_front(start_node)
     while queue.is_empty() == False:
         node = queue.dequeue_front()
         visit(node.data)
         if node.left != None:
             queue.enqueue_back(node.left)
         if node.right != None:
             queue.enqueue_back(node.right)
 def test_front_back(self):
     q = DeQueue()
     assert q.front() is None
     q.enqueue_back('A')
     assert q.front() == 'A'
     q.enqueue_back('B')
     assert q.front() == 'A'
     q.dequeue_front()
     assert q.front() == 'B'
     q.dequeue_back()
     q.enqueue_front('C')
     assert q.front() == 'C'
     q.enqueue_front('B')
     assert q.front() == 'B'
     q.enqueue_front('A')
     assert q.front() == 'A'
     assert q.back() == 'C'
     q.dequeue_front()
     assert q.front() == 'B'
     assert q.back() == 'C'
     q.dequeue_front()
     q.dequeue_front()
     assert q.front() is None
     assert q.back() is None
 def _traverse_level_order_iterative(self, start_node, visit):
     """Traverse this binary tree with iterative level-order traversal (BFS).
     Start at the given node and visit each node with the given function.
     Running time: o(n)
     Memory usage: Based on size of level, so n/2? """
     #  Create queue to store nodes not yet traversed in level-order
     queue = DeQueue()
     # Enqueue given starting node
     queue.enqueue_back(start_node)
     # Loop until queue is empty
     while queue.length() > 0:
         # Dequeue node at front of queue
         node = queue.dequeue_front()
         # Visit this node's data with given function
         visit(node.data)
         # Enqueue this node's left child, if it exists
         if node.left:
             queue.enqueue_back(node.left)
         # Enqueue this node's right child, if it exists
         if node.right:
             queue.enqueue_back(node.right)