Last Updated: 2 Dec, 2020

Same BST

Moderate
Asked in company
Codenation

Problem statement

You are given two binary search trees. Your task is to check whether the two BSTs contains the same set of elements or not.

The structure of the two given BSTs can be different.

Note: All elements in a given BST are unique.

For Example:

alttext

The above two BSTs contain the same set of elements, hence the answer is True.
Input Format:
The first line contains a single integer ‘T’ denoting the number of test cases to be run. 
Then the test cases follow.

The first line of each test case contains the elements of the first binary tree in the level order form separated by a single space.

The Second line of each test case contains the elements of the second binary tree in the level order form separated by a single space.

If any node does not have a left or right child, take -1 in its place. Refer to the example below.

1
2 3
4 -1 5 6
-1 7 -1 -1 -1 -1
-1 -1

Explanation :
Level 1 :
The root node of the tree is 1

Level 2 :
Left child of 1 = 2
Right child of 1 = 3

Level 3 :
Left child of 2 = 4
Right child of 2 = null (-1)
Left child of 3 = 5
Right child of 3 = 6

Level 4 :
Left child of 4 = null (-1)
Right child of 4 = 7
Left child of 5 = null (-1)
Right child of 5 = null (-1)
Left child of 6 = null (-1)
Right child of 6 = null (-1)

Level 5 :
Left child of 7 = null (-1)
Right child of 7 = null (-1)

The first not-null node (of the previous level) is treated as the parent of the first two nodes of the current level. The second not-null node (of the previous level) is treated as the parent node for the next two nodes of the current level and so on.

The input ends when all nodes at the last level are null (-1).

Note: The above format was just to provide clarity on how the input is formed for a given tree. 
The sequence will be put together in a single line separated by a single space. Hence, for the above-depicted tree, the input will be given as:

1 2 3 4 -1 5 6 -1 7 -1 -1 -1 -1 -1 -1
Output Format :
For each test case, You have to return ‘true’ if BSTs contain the same set of elements or ‘false’ if BSTs don’t contain the same set of elements.

Output for each test case will be printed in a separate line.
Note:
You are not required to print anything; it has already been taken care of. Just implement the function.
Constraints:
1 <= T <= 100 
1 <= N <= 1000

Time Limit: 1 sec

Approaches

01 Approach

Traverse both the tree in an Inorder fashion, store the value in hashsets and check for values at every index.

 

Algorithm:-

 

  1. Store the Inorder traversal of the first tree in a hashSet (INORDER1).
  2. Store the Inorder traversal of the second tree in another HashSet (INORDER2).
  3. Check for the values in the HashSet at every index. If values don’t found in the other HashSet then return false otherwise true if all values are found.
  4. To Traverse on the tree in inorder fashion :
    1. Traverse the left subtree.
    2. Visit the node and store its value in the array.
    3. Traverse the right subtree.