fork download
  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3.  
  4.  
  5. class Node(object):
  6.  
  7. def __init__(self, value, left=None, right=None):
  8. self.value = value
  9. self.left = left
  10. self.right = right
  11.  
  12.  
  13. class BinarySearchTree(object):
  14.  
  15. def __init__(self):
  16. self.root = None
  17. # self.nodes = list()
  18.  
  19. def insert(self, node, root=None):
  20. # if not self.nodes:
  21. # self.nodes = [obj]
  22. # return
  23.  
  24. # print(node, root)
  25.  
  26. if not self.root:
  27. self.root = node
  28. return
  29.  
  30. if not root:
  31. root = self.root
  32.  
  33. if node.value < root.value:
  34. if root.left is None:
  35. root.left = node
  36. else:
  37. self.insert(node, root.left)
  38. elif node.value > root.value:
  39. if root.right is None:
  40. root.right = node
  41. else:
  42. self.insert(node, root.right)
  43. else:
  44. return
  45.  
  46. def in_order_traverse(self, root=None):
  47. if self.root is None:
  48. return
  49.  
  50. def get_min(self, root=None):
  51. if root is None:
  52. root = self.root
  53.  
  54. if root.left is None:
  55. return root.value
  56. else:
  57. return self.get_min(root.left)
  58.  
  59.  
  60. tree = BinarySearchTree()
  61. values = (8, 3, 10, 1, 6, 14, -100, 4, 7, 13)
  62. # values = (1, 1, 1, 1)
  63. for x in values:
  64. tree.insert(Node(x))
  65.  
  66. tree.in_order_traverse()
  67. print(tree.get_min())
  68. # tree.get_min()
Success #stdin #stdout 0.04s 9440KB
stdin
Standard input is empty
stdout
-100