python实现二叉树排序

一 代码

  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
***********************

猜你喜欢

转载自cakin24.iteye.com/blog/2382425