from nodesrefs import *

""" tree traversals on trees represented using BinaryTree object """ 

def preorder(tree):
    """ preorder tree traversal """ 
    if tree:
        print tree.getRootValue()            # visit the node
        preorder(tree.getLeftChild())
        preorder(tree.getRightChild())

def inorder(tree):
    """ inorder tree traversal """
    if tree:
        inorder(tree.getLeftChild())
        print tree.getRootValue()            # visit the node
        inorder(tree.getRightChild())

def postorder(tree):
    """ postorder tree traversal """
    if tree:        
        postorder(tree.getLeftChild())
        postorder(tree.getRightChild())
        print tree.getRootValue()            # visit the node 
       
        
t = BinaryTree('*')
t.insertLeftChild('+')
t.insertRightChild('-')

lchild = t.getLeftChild()
rchild = t.getRightChild()

lchild.insertLeftChild(5)
lchild.insertRightChild(3)

rchild.insertLeftChild(7)
rchild.insertRightChild(5)

postorder(t)
print '----'
preorder(t)
print '-----'
inorder(t)