欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python实现二叉树排序

程序员文章站 2022-07-10 10:20:16
...

一 代码

  1. classBTree:
  2. def __init__(self,value):
  3. self.left =None
  4. self.data = value
  5. self.right =None
  6. def insertLeft(self,value):
  7. self.left =BTree(value)
  8. return self.left
  9. def insertRight(self,value):
  10. self.right =BTree(value)
  11. return self.right
  12. def show(self):
  13. print(self.data)
  14. #中序遍历
  15. def inorder(node):
  16. if node.data:
  17. if node.left:
  18. inorder(node.left)
  19. node.show()
  20. if node.right:
  21. inorder(node.right)
  22. #中序遍历,先遍历右子树
  23. def rinorder(node):
  24. if node.data:
  25. if node.right:
  26. rinorder(node.right)
  27. node.show()
  28. if node.left:
  29. rinorder(node.left)
  30. def insert(node,value):
  31. if value > node.data:
  32. if node.right:
  33. insert(node.right,value)
  34. else:
  35. node.insertRight(value)
  36. else:
  37. if node.left:
  38. insert(node.left,value)
  39. else:
  40. node.insertLeft(value)
  41. if __name__ =='__main__':
  42. l =[3,5,7,20,43,2,15,30]
  43. Root=BTree(l[0])
  44. node =Root
  45. for i in range(1,len(l)):
  46. insert(Root,l[i])
  47. print('***********************')
  48. print('从小到大')
  49. print('***********************')
  50. inorder(Root)
  51. print('***********************')
  52. print('从大到小')
  53. print('***********************')
  54. rinorder(Root)
  55. print('***********************')
 
二 运行结果
***********************
从小到大
***********************
2
3
5
7
15
20
30
43
***********************
从大到小
***********************
43
30
20
15
7
5
3
2
***********************