class TestQueue(unittest.TestCase): def setUp(self): self.queue = Queue() self.queue.enqueue(1) self.queue.enqueue(2) self.queue.enqueue(3) self.empty_queue = Queue() def test_dequeue(self): assert self.queue.dequeue() == 1 assert self.queue.dequeue() == 2 assert self.queue.dequeue() == 3 assert_raises(IndexError, self.queue.dequeue) def test_enqueue(self): self.queue.enqueue(7) assert len(self.queue) == 4 def test_is_empty(self): assert self.empty_queue.is_empty() def test_peek(self): assert self.queue.peek() == self.queue.peek() assert self.queue.peek() == 1 assert len(self.queue) == 3 assert_raises(IndexError, self.empty_queue.peek)
def from_array(cls, a: List) -> 'BinaryNode': """ Return a complete binary tree from an array """ if not a: return None # Push first element as root on the queue q = Queue() root_node = cls(a[0]) q.enqueue(root_node) # for i in a[1:]: node = cls(i) parent = q.peek() if not parent.lnode: parent.lnode = node q.enqueue(node) else: parent.rnode = node q.enqueue(node) q.dequeue() return root_node