二叉树的两种遍历方式

悠悠 2023-01-23 11:51 50阅读 0赞
  1. # 二叉树的遍历可分为两种
  2. ''' 1.广度优先遍历 分层把元素放到 队列中,进行遍历 2.深度优先遍历 前序,中序,后序遍历,使用堆栈和递归的方式 '''
  3. # 广度优先遍历一颗二叉树
  4. def bfsTree(self):
  5. if sele.root =None:
  6. return None
  7. queue =[]
  8. queue.append(self.root)
  9. while queue:
  10. node=queue.pop(0)
  11. print(node.element,end =',')
  12. if node.lchild != None:
  13. queue.append(node.lchild)
  14. if node.rchild != None:
  15. queue.append(node.rchild)
  16. print()
  17. # 深度优先遍历
  18. # 1.递归实现先序遍历
  19. def preorder(self,root):
  20. if not root:
  21. return
  22. print(root.element,end =',')
  23. self.preorder(root.lchild)
  24. self.preorder(root.rchild
  25. # 2.递归实现中序遍历
  26. def inorder(self,root):
  27. if not root:
  28. return
  29. self.inorder(root.lchild)
  30. print(root.element,end=',')
  31. self.inorder(root.rchild)
  32. # 3.递归实现后序遍历
  33. def postorder(self,root):
  34. if not root:
  35. return
  36. self.postorder(root.lchild)
  37. self.postorder(root.rchild)
  38. print(root.element,end = ',')
  39. if __name__ == '__main__':
  40. binaryTree = Tree()
  41. for i in range(7):
  42. binaryTree.__add__(i+1)
  43. # 广度优先遍历
  44. print("广度优先:")
  45. binaryTree.breadth_travel()
  46. # 深度优先,先序遍历
  47. root = binaryTree.root
  48. binaryTree.preorder(root)
  49. print('深度优先--先序遍历')
  50. binaryTree.inorder(root)
  51. print('深度优先--中序遍历')
  52. binaryTree.postorder(root)
  53. print('深度优先--后序遍历')

发表评论

表情:
评论列表 (有 0 条评论,50人围观)

还没有评论,来说两句吧...

相关阅读

    相关 方式

    二叉树的遍历可分为两种 ''' 1.广度优先遍历 分层把元素放到 队列中,进行遍历 2.深度优先遍历 前序,中序,后序遍历,使用堆栈和递归的方式 '''

    相关 方式

    二叉树的遍历方式 1. 首先二叉树的遍历是什么意思,为什么需要遍历,我先拿线性表来举例。大家对游戏中的排行榜肯定非常熟悉了吧,排行榜是根据假如是根据玩家战力进行排序在排