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]
示例#2
0
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]
示例#9
0
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]