Published:
# method have used hashmap class Node: pass root = Node() root.data = 1 root.left = Node() root.right = Node() root.left.data = 2 root.left.left = Node() root.left.right = Node() root.right.data = 3 root.right.left = Node() root.right.right = Node() node2 = root.left node2.left.data = 4 node2.right.data = 5 node3 = root.right node3.left.data = 6 node3.right.data = 7 node6 = node3.left node6.right = Node() node6.right.data = 8 node7 = node3.right node7.right = Node() node7.right.data = 9 def getVerticalOrder(node, hd, m): if node is None: return else: try: m[hd].append(node.data) except: m[hd] = [node.data] if hasattr(node, "right"): getVerticalOrder(node.right, hd+1, m) if hasattr(node, "left"): getVerticalOrder(node.left, hd-1, m) dictM = dict() getVerticalOrder(root, 0 , dictM) print(sorted(dictM)) for index, value in enumerate(sorted(dictM)): for data in dictM[value]: print(data, end="") print() more details at http://www.geeksforgeeks.org/print-binary-tree-vertical-order/ http://www.geeksforgeeks.org/print-binary-tree-vertical-order-set-2/