插入一连串数据构建BST二叉搜索树(未做平衡),binarytree,Python

x33g5p2x  于2021-11-27 转载在 Python  
字(0.8k)|赞(0)|评价(0)|浏览(446)

这里仅仅把一连串随机数据插入到BST二叉树中:

  1. import random
  2. import binarytree
  3. from binarytree import get_parent
  4. def app():
  5. data = []
  6. for i in range(10):
  7. data.append(i)
  8. random.shuffle(data)
  9. my_tree = None
  10. while len(data) > 0:
  11. d = data.pop()
  12. my_tree = insert(my_tree, binarytree.Node(d))
  13. print(my_tree)
  14. def insert(my_tree, node):
  15. if my_tree is None:
  16. return node
  17. root_node = my_tree
  18. while True:
  19. left = root_node.left
  20. right = root_node.right
  21. if left is None:
  22. if node.value < root_node.value:
  23. root_node.left = node
  24. break
  25. if right is None:
  26. if node.value > root_node.value:
  27. root_node.right = node
  28. break
  29. if node.value > root_node.value:
  30. root_node = right
  31. else:
  32. root_node = left
  33. return my_tree

模块放入主程序跑几轮结果输出:
 

  1. __3____
  2. / \
  3. 1 __6____
  4. / \ / \
  5. 0 2 4 9
  6. \ /
  7. 5 8
  8. /
  9. 7
  1. 0______________
  2. \
  3. ____8
  4. / \
  5. 5__ 9
  6. / \
  7. __4 7
  8. / /
  9. 2 6
  10. / \
  11. 1 3
  1. 2__________
  2. / \
  3. 1 ______8
  4. / / \
  5. 0 4 9
  6. / \
  7. 3 5__
  8. \
  9. 7
  10. /
  11. 6
  1. __2________
  2. / \
  3. 0 __7
  4. \ / \
  5. 1 __5 8
  6. / \ \
  7. 3 6 9
  8. \
  9. 4

显然生成的不是AVL平衡二叉搜索树,因为还没有对树进行平衡。

相关文章