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)
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)])