# Top View of a Binary Tree

## Binary Tree:

There can be a maximum of two children for each parent in a binary tree, which is a non-linear data structure of the tree type.

Every node in a binary tree has a left and right reference in addition to the data element. The node at the top of a tree's hierarchy is known as the root node. The nodes that contain other sub-nodes are the parent nodes.

The left and right children are the two children of a parent node. Hashing, data compression, network traffic routing, setting up binary heaps, and building binary search trees are just a few of the uses for a binary tree.

## Top View:

Nodes in a binary tree are connected to one another in such a way that each node can have a maximum of two children.

Top view nodes are those that can be seen when looking down from above. We can print the nodes in any order in order to print the binary tree's top view.

A binary tree's top view is the collection of nodes that can be seen when the tree is seen from the top. For the tree depicted below

### Example:

4 2 1 3 7 will appear at the top. Therefore, the top view will be: 4 2 1 3 7.

### Approach

The strategy is to traverse the tree using the preorder traversal, check that the current vertical level has been visited, and if so, search for the smaller horizontal level node and store it. If not, we may simply update the visited vertical level and store the current node's node and horizontal level.

Since the map will show the node's horizontal distance from the root node, we can use it to determine if the horizontal level has been reached or not. Where key stands for the horizontal distance and value is the pair made up of each node's value and level,

Preorder traversal will be used to navigate the tree.

The value and level for this horizontal distance are updated each time we determine whether the level of the current horizontal distance is less than the highest level previously observed.

To obtain the vertical level, we must pass level 1 for the left child and level +1 for the right child.

In the map, print the values that are there.

### C++ Program:

```Input:
1
/    \
2      3
Output:
2 1 3
```

Java Program:

Output:

```Input:
1
/    \
2      3
Output:
2 1 3
```

Python Program:

Output:

```Input:
1
/    \
2      3
Output:
2 1 3
```

Time Complexity: O(N), where N is the array's size, is the time complexity.

Space complexity: O(1)

### How do you find the top view of a tree?

In order to discover it recursively while storing the horizontal distance between each node and the root node, we must first identify the nodes that are visible from the top.

A treetop view consists of the nodes that may be seen when a tree is viewed from the top.

### Feedback   