def binary_tree_insert(treenode, value, greaterthan): |
def binary_tree_insert(treenode, value): |
if greaterthan(nodevalue, value): return (binary_tree_insert(left, value, greaterthan), nodevalue, right) |
if nodevalue > value: return (binary_tree_insert(left, value), nodevalue, right) |
return (left, nodevalue, binary_tree_insert(right, value, greaterthan)) |
return (left, nodevalue, binary_tree_insert(right, value)) |
def build_binary_tree(values, greaterthan=lambda x, y: x > y): |
def build_binary_tree(values): |
tree = binary_tree_insert(tree, v, greaterthan) |
tree = binary_tree_insert(tree, v) |
def search_binary_tree(treenode, value, greaterthan=lambda x, y: x > y): |
def search_binary_tree(treenode, value): |
if greaterthan(nodevalue, value): return search_binary_tree(left, value, greaterthan) elif greaterthan(value, nodevalue): return search_binary_tree(right, value, greaterthan) |
if nodevalue > value: return search_binary_tree(left, value) elif value > nodevalue: return search_binary_tree(right, value) |
return (traverse_binary_tree(left) + [value] + traverse_binary_tree(right)) |
return (traverse_binary_tree(left) + [value] + traverse_binary_tree(right)) |
def treesort(array, cmp=lambda x, y: x > y): array[:] = traverse_binary_tree(build_binary_tree(array, cmp)) |
def treesort(array): array[:] = traverse_binary_tree(build_binary_tree(array)) |