def test5(): test_array = [5, 41, 81, 86, 55, 10, 28, 19, 79, 12, 3, 21] bst = BinarySearchTree() for item in test_array: bst.add(item) print(bst) # [5, 3, 41, 10, 81, 28, 55, 86, 19, 79, 12, 21] print(bst.level_order_tranversal()) print('****' * 10) # # 删除叶子节点 # bst.remove(21) # # [5, 3, 41, 10, 81, 28, 55, 86, 19, 79, 12] # print(bst.level_order_tranversal()) # 删除度为1的节点 # bst.remove(10) # # # [5, 3, 41, 28, 81, 19, 55, 86, 12, 21, 79] # # print(bst.level_order_tranversal()) # 删除度为2的节点 # bst.remove(41) # # [5, 3, 55, 10, 81, 28, 79, 86, 19, 12, 21] # print(bst.level_order_tranversal()) # 删除根节点 bst.remove(5) # [10, 3, 41, 28, 81, 19, 55, 86, 12, 21, 79] print(bst.level_order_tranversal())
def test3(): # 自定义比较函数 def compare(e1, e2): return e2 - e1 test_array = [5, 41, 81, 86, 55, 10, 28, 19, 79, 12, 3, 21] bst = BinarySearchTree(compare) # 这还可以使用lambda匿名函数 # bst = BinarySearchTree(lambda e1, e2: e2 - e1) for item in test_array: bst.add(item) print(bst) print(bst.level_order_tranversal())
if __name__ == '__main__': # test1() # test2() # 测试自定义比较函数 # test3() # 测试自定义类 使用匿名函数 # test4() test_array = [5, 41, 81, 86, 55, 10, 28, 19, 79, 12, 3, 21] bst = BinarySearchTree() for item in test_array: bst.add(item) print(bst) # [5, 3, 41, 10, 81, 28, 55, 86, 19, 79, 12, 21] print(bst.level_order_tranversal()) print('****' * 10) # # 删除叶子节点 # bst.remove(21) # # [5, 3, 41, 10, 81, 28, 55, 86, 19, 79, 12] # print(bst.level_order_tranversal()) # 删除度为1的节点 # bst.remove(10) # # # [5, 3, 41, 28, 81, 19, 55, 86, 12, 21, 79] # # print(bst.level_order_tranversal()) # 删除度为2的节点 # bst.remove(41) # # [5, 3, 55, 10, 81, 28, 79, 86, 19, 12, 21] # print(bst.level_order_tranversal())