class Node(object):
def __init__(self,val=None):
self.val = val
self.left = None
self.right = None
def printTree(root):
if not root :
return
print('Binary Tree:')
printInOrder(root ,0,'H',17)
def printInOrder(root,height,preStr,length):
if not root:
return
printInOrder(root.right,height+1,'v',length)
string = preStr + str(root.val) + preStr
leftLen = (length - len(string))//2
rightLen = length - len(string) - leftLen
res = " "*leftLen+string+" "*rightLen
print(" "*height*length+res)
printInOrder(root.left,height+1,'^',length)
head = Node(1)
head.left = Node(-222222222)
head.right = Node(3)
head.left.left = Node(523)
head.right.left = Node(55555555)
head.right.right = Node(66)
head.left.left.right = Node(777)
printTree(head)