def test_prepend(self): ll = LinkedList() ll.prepend(1) self.assertEqual([1], ll.to_list()) ll.prepend(2) self.assertEqual([2, 1], ll.to_list()) ll.prepend(3) self.assertEqual([3, 2, 1], ll.to_list())
def test_insert(self): ll = LinkedList() ll.insert(1, 0) self.assertEqual(1, ll.head.value) ll.insert(2, 1) self.assertEqual(2, ll.head.next.value) ll.insert(3, 2) self.assertEqual(3, ll.head.next.next.value)
def test_merge_sorted(self): ll1 = from_array_list([1, 3, 5, 7, 9]) ll2 = from_array_list([1, 4, 6, 8]) head = merge_sorted(ll1.head, ll2.head) ll = LinkedList() ll.head = head self.assertEqual([1, 1, 3, 4, 5, 6, 7, 8, 9], ll.to_list())
def test_get(self): ll = LinkedList() ll.append(1) ll.append(2) ll.append(3) self.assertEqual(1, ll.get(0).value) self.assertEqual(2, ll.get(1).value) self.assertEqual(3, ll.get(2).value) self.assertEqual(None, ll.get(3))
def simple_list(n): """ Generates simple linked lists with numbers from 0 to n. Time complexity: O(n) Space complexity: O(n) """ ll = LinkedList() for i in range(n - 1, -1, -1): ll.prepend(i) return ll
def test_insertsorted(self): ll = from_array_list([1, 2, 3, 5, 6, 7]) insert_sorted(ll, 4) self.assertEqual([1, 2, 3, 4, 5, 6, 7], ll.to_list()) ll = from_array_list([1, 2, 3]) insert_sorted(ll, 4) self.assertEqual([1, 2, 3, 4], ll.to_list()) ll = LinkedList() insert_sorted(ll, 1) self.assertEqual([1], ll.to_list())
def test_has_cycle_list(self): for method in self.methods: ll = LinkedList() self.assertFalse(method(ll.head), method.__name__) ll = simple_list(LIST_SIZE) self.assertFalse(method(ll.head), method.__name__) cll = cycle_list(LIST_SIZE) self.assertTrue(method(cll.head), method.__name__) rcll = random_cycle_list(LIST_SIZE) self.assertTrue(method(rcll.head), method.__name__)
def test_delete(self): ll = LinkedList() ll.append(1) ll.append(2) ll.append(3) ll.append(4) ll.delete(0) self.assertEqual([2, 3, 4], ll.to_list()) ll.delete(1) self.assertEqual([2, 4], ll.to_list()) ll.delete(1) self.assertEqual([2], ll.to_list()) ll.delete(0) self.assertEqual([], ll.to_list())
def __init__(self): self._main_stack = LinkedList() self._max_stack = LinkedList() self._map = {}
def test_find_loop_lengt(self): ll = cycle_list(LIST_SIZE) self.assertEqual(LIST_SIZE, find_cycle_length(ll.head)) ll = LinkedList() self.assertEqual(0, find_cycle_length(ll.head))
def test_to_list(self): ll = LinkedList() ll.head = Node(1) ll.head.next = Node(2) ll.head.next.next = Node(3) self.assertEqual([1, 2, 3], ll.to_list())
def breadth_first_traversal(tr_queue, level, build_str): """Print a graphical depiction of the tree using breadth first traversal.""" if len(tr_queue) == 0: return root = tr_queue.popleft() build_str = build_str + "{0:4d}".format(root.data) if root.data == 2**level - 1: # reached a new level of tree print_str = "{: ^50}\n".format(build_str) build_str = "" print(print_str) level = level + 1 if root.left: tr_queue.append(root.left) if root.right: tr_queue.append(root.right) breadth_first_traversal(tr_queue, level, build_str) if __name__ == "__main__": """Generate linked list, convert to binary tree.""" l_list = build_linked_list(24, 1, LinkedList()) bin_tree = build_tree_from_linked_list(l_list.head) queue = deque() queue.append(bin_tree.root) breadth_first_traversal(queue, 1, "")
def test_last(self): ll = LinkedList() ll.head = Node(1) ll.head.next = Node(2) ll.head.next.next = Node(3) self.assertEqual(3, ll.length())
def test_append(self): ll = LinkedList() ll.append(1) self.assertEqual([1], ll.to_list()) ll.append(2) self.assertEqual([1, 2], ll.to_list())
def test_constructor(self): ll = LinkedList() self.assertEqual(ll.head, None)
def setUp(self): self.al = LinkedList()
def __init__(self): self.ll = LinkedList()