Given a binary tree, print the bottom view from left to right.

A node is included in bottom view if it can be seen when we look at the tree from bottom.

20

/ \

8 22

/ \ \

5 3 25

/ \

10 14

For the above tree, the bottom view is 5 10 3 14 25.

If there are **multiple **bottom-most nodes for a horizontal distance from root, then print the later one in level traversal. For example, in the below diagram, 3 and 4 are both the bottommost nodes at horizontal distance 0, we need to print 4.

20

/ \

8 22

/ \ / \

5 3 4 25

/ \

10 14

For the above tree the output should be 5 10 4 14 25.

**Input Format:**

First line of input contains the number of test cases **T**. For each test case, there will be two lines:

- First line of each test case will be an integer
**N**denoting the number of parent child relationships. - Second line of each test case will print the
**level order traversal**of the tree in the form of**N space-separated triplets**. The description of triplets is as follows:- Each triplet will contain
**three space-separated**elements of the form (int, int, char). - The first integer element will be the value of parent.
- The second integer will be the value of corresponding
**left**or**right child**. In case the child is null, this value will be**-1**. - The third element of triplet which is a character can take any of the three values
**‘L’, ‘R’**or**‘N’.**L denotes that the children is a left child, R denotes that the children is a Right Child and N denotes that the child is NULL.

- Each triplet will contain

Please note that the relationships are printed only for internal nodes and not for leaf nodes.

**Output Format:**

The function should print nodes in the bottom view of Binary Tree. Your code should not print a newline, it is added by the caller code that runs your function.

**User Task:**

This is a functional problem, you don't need to care about input, just complete the function **bottomView**() which should print the bottom view of the given tree.

**Constraints:**

1 <= T<= 100

1 <= Number of nodes <= 100

1 <= Data of a node <= 1000

**Example:
Input:**

2

2

1 3 L 1 2 R

8

4 5 L 4 4 R 5 2 L 5 7 R 4 -1 N 4 7 R 2 6 L 2 3 R

3 1 2

6 2 3 7 4 7

**Explanation:
Testcase 1:** First case represents a tree with 3 nodes and 2 edges where root is 1, left child of 1 is 3 and right child of 1 is 2.

Thus nodes of the binary tree will be printed as such 3 1 2.

**Note: **The **Input/Output** format and **Example** given are used for the system's internal purpose, and should be used by a user for **Expected Output **only. As it is a function problem, hence a user should not read any input from the stdin/console. The task is to complete the function specified, and not to write the full code.

Author: kartik

If you have purchased any course from GeeksforGeeks then please ask your doubt on course discussion forum. You will get quick replies from GFG Moderators there.

akhyasharma01 | 467 |

ASWATHAMA | 399 |

john_wick | 360 |

mmzeineddine | 295 |

PiyushPandey4 | 271 |

PiyushPandey4 | 614 |

ASWATHAMA | 561 |

akhyasharma01 | 547 |

john_wick | 521 |

rahulnishad96 | 442 |

blackshadows | 5362 |

Ibrahim Nash | 5242 |

akhayrutdinov | 5111 |

mb1973 | 4929 |

Quandray | 4598 |

Login to report an issue on this page.