Home Blog Coding Problem Practice

Print a Binary Tree in Vertical Order

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/
Comment