def testtree():
    T=BinarySearchTree()
    n=int(raw_input("Enter number of elements: "))
    for i in range(n):
        T.insertElement(int(raw_input("Enter element "+str(i+1)+" : ")))
    x=int(raw_input("Enter the element you want to delete: "))
    T.deleteElement(x)
    print "The tree is:" 
    T.inorderTraverse(T.root)
def testtree():
    T=BinarySearchTree()
    n=int(raw_input())
    for i in range(n):
        T.insertElement(int(raw_input("Enter element "+str(i+1)+" : ")))
    l=int(raw_input("Enter Lower Value: "))
    h=int(raw_input("Enter Higher Value: "))
    print T.SumofValues(T.root,l,h)
    print "The tree is:" 
    T.inorderTraverse(T.root)
def testBST():
    bst1 = BinarySearchTree()
    n=int(raw_input("Enter number of elements: "))
    for i in range(n):
        bst1.insertElement(int(raw_input()))
    print "INORDER:"
    bst1.inorderTraverse(bst1.root)
    print
    print "PREORDER:"
    bst1.preorderTraverse(bst1.root)
    print
    print "POSTORDER:"
    bst1.postorderTraverse(bst1.root)