binarytree二叉树节点BFS广度优先搜索遍历,基于队列,非递归,python

x33g5p2x  于2021-11-15 转载在 Python  
字(0.6k)|赞(0)|评价(0)|浏览(369)
  1. import random
  2. from binarytree import build
  3. def app():
  4. data = []
  5. for i in range(9):
  6. data.append(i)
  7. random.shuffle(data)
  8. root = build(data)
  9. root.pprint(index=True, delimiter=',')
  10. print('binarytree标准遍历', root.values)
  11. print('-----')
  12. nodes = my_travel(root)
  13. print('广度遍历', nodes)
  14. # 广度遍历,从左至右,自顶向下
  15. def my_travel(root):
  16. nodes = []
  17. Q = [root[0]]
  18. while True:
  19. n = Q[0]
  20. nodes.append(n.value)
  21. del (Q[0])
  22. if n.left != None:
  23. Q.append(n.left)
  24. if n.right != None:
  25. Q.append(n.right)
  26. if len(Q) == 0:
  27. break
  28. return nodes
  29. if __name__ == '__main__':
  30. app()

运行输出:

  1. _____0,3_____
  2. / \
  3. _____1,7_ _2,1_
  4. / \ / \
  5. _3,0_ 4,8 5,2 6,5
  6. / \
  7. 7,4 8,6
  8. binarytree标准遍历 [3, 7, 1, 0, 8, 2, 5, 4, 6]
  9. -----
  10. 广度遍历 [3, 7, 1, 0, 8, 2, 5, 4, 6]

相关文章