def bst_to_linkedlist(bst):
    """
    Take in a binary search tree object and return a linked list of all the
    nodes at each depth.

    """
    # check that the bst has at least a root node
    node = bst.get_root()
    if node is None:
        return
    # using a version of level order traversal(breadth first search)
    # queue up the first element
    queue = [[0, node]]
    # initialize result list
    result = []
    # set the level for which
    level = 0
    while len(queue) > 0:
        trav = queue.pop(0)
        if trav[1].left is not None:
            queue.append([trav[0] + 1, trav[1].left])
        if trav[1].right is not None:
            queue.append([trav[0] + 1, trav[1].right])
        added = False
        for item in result:
            if trav[0] == item[0]:
                result[trav[0]].append(trav[1].data)
                added = True
        if not added:
            result.append([trav[0], trav[1].data])
        level += 1
    # result[*][0] of every element is the level of the tree
    # we strip the level from each index of result
    linkedlist_sets = []
    for item in result:
        item.pop(0)
        linkedlist = LinkedList()
        for value in item:
            linkedlist.insert(value)
        linkedlist_sets.append(linkedlist)
    # result in list format
    print result
    # result in linked list format
    print linkedlist_sets
    return linkedlist_sets  #  [[8], [3, 10], [1, 6, 14], [4, 7, 13]]
예제 #2
0
def linked_list_add(num1, num2):
    result = LinkedList()
    curr1 = num1.get_head()
    curr2 = num2.get_head()
    carry = False

    while curr1 is not None:
        while curr2 is not None:
            if carry:
                value = curr1.data + curr2.data + 1
            else:
                value = curr1.data + curr2.data
            if value >= 10:
                carry = True
            else:
                carry = False
            result.insert(value%10)
            curr2 = curr2.next
            break
        curr1 = curr1.next
    if carry:
        result.insert(1)
    return result
def linked_list_add(num1, num2):
    result = LinkedList()
    curr1 = num1.get_head()
    curr2 = num2.get_head()
    carry = False

    while curr1 is not None:
        while curr2 is not None:
            if carry:
                value = curr1.data + curr2.data + 1
            else:
                value = curr1.data + curr2.data
            if value >= 10:
                carry = True
            else:
                carry = False
            result.insert(value % 10)
            curr2 = curr2.next
            break
        curr1 = curr1.next
    if carry:
        result.insert(1)
    return result
            if carry:
                value = curr1.data + curr2.data + 1
            else:
                value = curr1.data + curr2.data
            if value >= 10:
                carry = True
            else:
                carry = False
            result.insert(value % 10)
            curr2 = curr2.next
            break
        curr1 = curr1.next
    if carry:
        result.insert(1)
    return result


if __name__ == "__main__":
    num1 = LinkedList()
    num2 = LinkedList()

    num1.insert(1)
    num1.insert(2)
    num1.insert(3)
    num1.insert(4)
    num2.insert(5)
    num2.insert(6)
    num2.insert(7)
    num2.insert(8)
    linked_list_add(num1, num2).print_list()
예제 #5
0
        while curr2 is not None:
            if carry:
                value = curr1.data + curr2.data + 1
            else:
                value = curr1.data + curr2.data
            if value >= 10:
                carry = True
            else:
                carry = False
            result.insert(value%10)
            curr2 = curr2.next
            break
        curr1 = curr1.next
    if carry:
        result.insert(1)
    return result

if __name__ == "__main__":
    num1 = LinkedList()
    num2 = LinkedList()

    num1.insert(1)
    num1.insert(2)
    num1.insert(3)
    num1.insert(4)
    num2.insert(5)
    num2.insert(6)
    num2.insert(7)
    num2.insert(8)
    linked_list_add(num1, num2).print_list()