n0va_sa

Binary Search Tree

Sep 25th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.64 KB | None | 0 0
  1. class Node:
  2.     def __init__(self,value):
  3.         self.left = None
  4.         self.right = None
  5.         self.value = value
  6.  
  7. class BinaryTree:
  8.     def __init__(self):
  9.         self.root = Node(100) #Root will be always 1000
  10.  
  11.     def addNode(self, value):
  12.         def insertRoutine(current,value):
  13.             if current.value >= value:
  14.                 if current.left == None:
  15.                     current.left = Node(value)
  16.                     return
  17.                 else:
  18.                     insertRoutine(current.left, value)
  19.             else:
  20.                 if current.right == None:
  21.                     current.right = Node(value)
  22.                     return
  23.                 else:
  24.                     insertRoutine(current.right, value)
  25.         insertRoutine(self.root, value)
  26.  
  27.     def getMin(self):
  28.         current = self.root
  29.         while current.left != None:
  30.             current = current.left
  31.         return current.value
  32.  
  33.     def getMax(self):
  34.         current = self.root
  35.         while current.right != None:
  36.             current = current.right
  37.         return current.value
  38.  
  39.     def printTree(self, mode=2):
  40.         def postOrder(current):
  41.             if current == None:
  42.                 return
  43.             postOrder(current.left)
  44.             postOrder(current.right)
  45.             print(current.value, end='\t')
  46.  
  47.         def preOrder(current):
  48.             if current == None:
  49.                 return
  50.             print(current.value, end='\t')
  51.             preOrder(current.left)
  52.             preOrder(current.right)
  53.  
  54.         def inOrder(current):
  55.             if current == None:
  56.                 return
  57.             inOrder(current.left)
  58.             print(current.value, end='\t')
  59.             inOrder(current.right)
  60.  
  61.         if mode == 1: postOrder(self.root)
  62.         elif mode == 2: preOrder(self.root)
  63.         elif mode == 3: inOrder(self.root)
  64.         return 0
  65.  
  66. def main():
  67.     x = BinaryTree()
  68.     x.addNode(1000)
  69.     x.addNode(50)
  70.     x.addNode(40)
  71.     x.addNode(999)
  72.     x.addNode(1423)
  73.     x.addNode(1421)
  74.     x.addNode(1425)
  75.     x.printTree(3)
  76.  
  77.  
  78. main()
Add Comment
Please, Sign In to add comment