def test_flatten(): head = Node(1, None, None, None) child = Node(3, None, None, None) child.next = Node(4, child, None, None) head.next = Node(2, head, None, child) head.next.next = Node(5, head.next, None, None) assert get_list_values(flatten(head)) == [1, 2, 3, 4, 5] assert get_list_values(flatten_iterative(head)) == [1, 2, 3, 4, 5]
def test_reverse_linked_list(): head = SinglyLinkedListNode(1) head.next = SinglyLinkedListNode(2) head.next.next = SinglyLinkedListNode(3) assert get_list_values(reverse_linked_list_recursive(head)) == [3, 2, 1] head = SinglyLinkedListNode(1) head.next = SinglyLinkedListNode(2) assert get_list_values(reverse_linked_list_recursive(head)) == [2, 1] head = SinglyLinkedListNode(1) assert get_list_values(reverse_linked_list_recursive(head)) == [1]
def test_reverse_linked_list(): head = ListNode(1) head.next = ListNode(2) head.next.next = ListNode(3) assert get_list_values(reverse_linked_list(head)) == [3, 2, 1] head = ListNode(1) head.next = ListNode(2) assert get_list_values(reverse_linked_list(head)) == [2, 1] head = ListNode(1) assert get_list_values(reverse_linked_list(head)) == [1]
def test_merge_two_lists(): list1 = ListNode(1) assert get_list_values(merge_two_lists(list1, None)) == [1] list2 = ListNode(1) assert get_list_values(merge_two_lists(list1, list2)) == [1, 1] list1.next = ListNode(2) list1.next.next = ListNode(4) list2.next = ListNode(3) list2.next.next = ListNode(4) assert get_list_values(merge_two_lists(list1, list2)) == [1, 1, 2, 3, 4, 4]
def test_delete_duplicates(): head = None assert delete_duplicates(head) is None head = SinglyLinkedListNode(1) assert get_list_values(delete_duplicates(head)) == [1] head.next = SinglyLinkedListNode(2) head.next.next = SinglyLinkedListNode(2) head.next.next.next = SinglyLinkedListNode(3) head.next.next.next.next = SinglyLinkedListNode(4) head.next.next.next.next.next = SinglyLinkedListNode(4) assert get_list_values(delete_duplicates(head)) == [1, 2, 3, 4]
def test_merge_k_lists(): lists = [ get_singly_linked_list([1, 2, 3]), get_singly_linked_list([1, 3, 4, 5]), get_singly_linked_list([3, 6]) ] assert get_list_values(merge_k_lists(lists)) == [1, 1, 2, 3, 3, 3, 4, 5, 6] lists = [None, None, get_singly_linked_list([1, 2, 3])] assert get_list_values(merge_k_lists(lists)) == [1, 2, 3] lists = [] assert merge_k_lists(lists) is None lists = [None, None] assert merge_k_lists(lists) is None
def test_add_two_numbers(): head1 = ListNode(1) head1.next = ListNode(2) head1.next.next = ListNode(3) head2 = None assert get_list_values(add_two_numbers(head1, head2)) == [1, 2, 3] head1 = ListNode(5) head2 = ListNode(5) assert get_list_values(add_two_numbers(head1, head2)) == [0, 1] head1.next = ListNode(2) head2.next = ListNode(3) head2.next.next = ListNode(4) assert get_list_values(add_two_numbers(head1, head2)) == [0, 6, 4]
def test_rotate_list(): head = None assert rotate_list(head, 1) is None head = SinglyLinkedListNode(1) assert get_list_values(rotate_list(head, 1)) == [1] assert get_list_values(rotate_list(head, 3)) == [1] head.next = SinglyLinkedListNode(2) assert get_list_values(rotate_list(head, 1)) == [2, 1] head = SinglyLinkedListNode(1) head.next = SinglyLinkedListNode(2) head.next.next = SinglyLinkedListNode(3) head.next.next.next = SinglyLinkedListNode(4) head.next.next.next.next = SinglyLinkedListNode(5) assert get_list_values(rotate_list(head, 2)) == [4, 5, 1, 2, 3]
def test_odd_even_linked_list(): head = SinglyLinkedListNode(1) assert odd_even_list(head) == head head.next = SinglyLinkedListNode(2) head.next.next = SinglyLinkedListNode(3) head.next.next.next = SinglyLinkedListNode(4) head.next.next.next.next = SinglyLinkedListNode(5) assert get_list_values(odd_even_list(head)) == [1, 3, 5, 2, 4]
def test_remove_elements(): assert remove_elements(None, 1) is None head = ListNode(1) assert remove_elements(head, 1) is None assert remove_elements(head, 2) is head head = ListNode(1) head.next = ListNode(2) head.next.next = ListNode(2) head.next.next.next = ListNode(3) assert get_list_values(remove_elements(head, 2)) == [1, 3]