Instagram
youtube
Facebook
Twitter

Top View| Tree

Task(easy)

Given a pointer to the root of a binary tree, print the top view of the binary tree.

The tree as seen from the top the nodes, is called the top view of the tree.

For example :

   1

    \

     2

      \

       5

      /  \

     3    6

      \

       4

Top View :  1-> 2 -> 5 -> 6

Complete the function TOPVIEW  and print the resulting values on a single line separated by space.

Input Format

You are given a function,

void topView(node * root) {

}

Constraints

1<= Nodes in the tree <= 50  

Output Format

Print the values on a single line separated by space.

Sample Input

  

1

    \

     2

      \

       5

      /  \

     3    6

      \

       4

Sample Output

1 2 5 6

Explanation  

1

    \

     2

      \

       5

      /  \

     3    6

      \

       4

From the top, only nodes 1,2,,5,6  are visible.

SOLUTION 1

from collections import deque

def topView(root):

      result = {} 

    bfs = deque()

    bfs.append((root, 0))

      while bfs:

        node, distance = bfs.popleft()   

        if distance not in result:

            result[distance] = node.info       

        if node.left:

            bfs.append((node.left, distance - 1))

             if node.right:

            bfs.append((node.right, distance + 1))

    result = dict(sorted(result.items()))

    print(" ".join(map(str, result.values())))