Пример #1
0
            elif val < curr.val:
                succ = curr
                curr = curr.left
            elif val > curr.val:
                pred = curr
                curr = curr.right
    return str(pred), str(succ)


# r = TreeNode(10)
# r.left = TreeNode(9)
# r.left.right = TreeNode(9.1)
# r.left.left = TreeNode(8)
# r.right = TreeNode(20)
# r.right.left = TreeNode(15)
# r.right.left.right = TreeNode(17)
# r.right.left.right.left = TreeNode(16)
# r.right.left.right.left.right = TreeNode(16.1)
# r.right.left.right.right = TreeNode(18)
# r.right.right = TreeNode(200)
# r.right.right.right = TreeNode(220)

# same tree as above^ but with parent links enabled
r = TreeNode(10)
for v in [9, 9.1, 8, 20, 15, 17, 16, 16.1, 18, 200, 220]:
    r.insert(v)

node_in_question = r.right.right.right
print find_successor_from_node(r, node_in_question)
print find_successor_from_node_using_parent_links(node_in_question)
print get_predecessor_successor(r, node_in_question.val)
Пример #2
0
root.right.right = TreeNode(10)

root = TreeNode(12)
root.left = TreeNode(10)
root.right = TreeNode(14)
root.left.left = TreeNode(9)
root.left.right = TreeNode(11)
root.right.left = TreeNode(13)
root.right.left.right = TreeNode(13.5)
root.right.right = TreeNode(16)
root.right.right.right = TreeNode(17)
root.right.right.right.right = TreeNode(19)

root = TreeNode(10)
for i in [100, 5, 500]:
    root.insert(i)

pprint(find_arrays_from_bst(root))
print(len(find_arrays_from_bst(root)))


for i in range(7):
    for j in range(7):
        a = range(i)
        b = range(j)
        ans1 = set([tuple(item) for item in
                    permute_with_partial_ordering_alternative(a, b)])

        ans2 = set([tuple(item) for item in
                    permute_with_partial_ordering(a, b)])