Skip to content

Instantly share code, notes, and snippets.

@oshea00
Created July 31, 2018 05:36
Show Gist options
  • Save oshea00/5a872e61c8f1438955fbb7ff152168d6 to your computer and use it in GitHub Desktop.
Save oshea00/5a872e61c8f1438955fbb7ff152168d6 to your computer and use it in GitHub Desktop.
from math import log2, pow
class Tree():
def __init__(this,value=None,left=None,right=None):
this.value = value
this.left = left
this.right = right
tree = Tree('*',
Tree('-',
Tree('5'),
Tree('7')),
Tree('+',
Tree('3'),
Tree('2')))
def inorder(tree,n):
if tree == None:
return
inorder(tree.left,n+1)
print(str(n)+'-'+tree.value)
inorder(tree.right,n+1)
def postfix(tree,n):
if tree == None:
return
print('left '+str(n))
postfix(tree.left,n+1)
print('right'+str(n))
postfix(tree.right,n+1)
print(str(n)+'-'+tree.value)
def prefix(tree,n,c,v):
if tree==None:
return
c+=1
v(tree,n,c)
prefix(tree.left,n+1,c,v)
c+=1
prefix(tree.right,n+1,c,v)
def visit(tree,level,count,width=15):
gap = width//int(pow(2,level))
linepad = ' '*(gap//2)+'-'*(gap//2)
pad = ' '*gap
#print('visit: '+tree.value+' item: '+str(count)+ ' lvl: '+str(level))
print(pad+'|')
print(linepad+' '+tree.value)
print('Expresssion:')
print('5 * (3 + 2)')
print()
print('Tree:')
print('==Prefix==')
prefix(tree,0,0,visit)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment