Guess Price

Easy
0/40
Average time to solve is 10m
profile
Contributed by
43 upvotes
Asked in companies
GoogleExpedia GroupZS Associates

Problem statement

Your friends gifted you a lot of things on your birthday, and now it's your turn to give some return gifts to them. You went to a gift store and decided to buy some Binary Search Trees (BST).

There is no salesperson in the store. So you are supposed to guess the price of a given BST, which is the minimum value in its nodes.

Detailed explanation ( Input/output format, Notes, Images )
Input Format:
The first line contains 'T', denoting the number of test cases.
For each Test :
    The first line contains an integer, 'N'.
    The second line contains an array 'A' of 'N' space-separated integers, with a positive integer representing a node and -1 representing a NULL value.

The input array 'A' denotes Level Order traversal of the BST.
(Note that 'N' is not the number of nodes in the BST,  only positive integers in 'A' denote nodes of BST).
Output Format:
For each test case, print one integer, denoting the price of a given BST, i.e., minimum node value in it.
Note:
You are not required to print the expected output. It has already been taken care of. Just implement the function.
Constraints -
1 <= 'T' <= 10
1 <= 'N' <= 10^5
1 <= A[i] <= 10^6 or A[i] = -1,  i ∈ (1, N)
Note - The sum of 'N' over all test cases does not exceed 2 * 10^5.

Time Limit: 1 sec
Sample Input 1:
2
13
5 4 6 3 -1 -1 7 1 -1 -1 -1 -1 -1
7
9 -1 10 -1 11 -1 -1
Sample Output 1
1
9
Explanation for Sample Input 1:
For Case 1:

Given input looks like the tree drawn above. It can be seen that the minimum value in the tree is 1.

For Case 2:

    Given input looks like the tree drawn above. It can be seen that the minimum value in the tree is 9.
Sample Input 2:
2
7
20 8 22 -1 -1 -1 -1
15
40 9 50 4 12 -1 -1 -1 -1 10 14 -1 -1 -1 -1
Sample Output 2:
8
4
Hint

Can we recursively traverse to visit all the nodes of the given BST?

Approaches (2)
Depth First Search

Approach: Maintain a variable to store the minimum value in the tree. Do any traversal of your choice (Inorder, Preorder, Postorder, etc.) on the tree, and for each node, update the variable to keep track of the minimum value.

 

Algorithm:

  • Create a variable 'ans' to keep track of the minimum value in the BST.
  • Implement a recursive function to traverse the tree.
    • The function accepts only one parameter: Pointer to a node in the BST.
    • If the current node value is smaller than 'ans', update 'ans'.
    • Call recursion on left and right children of the current node (if children are not NULL).
  •  
  • Implementation of main function.
    • Initialize 'ans' with root node value.
    • Call above recursive function on the root node.
    • Return' ans'.
Time Complexity

O(N), where 'N' is the number of nodes in the BST.

Any traversal (Inorder, Preorder, Postorder) on the tree, iterate each tree node once. Hence, overall time complexity becomes O(N).

Space Complexity

O(H), where 'H' is the height of the given tree.

Recursion stack keeps track of nodes from root to leaf, and the count of these nodes cannot exceed the tree's height. Hence, overall space complexity becomes O(H).

Code Solution
(100% EXP penalty)
Guess Price
Full screen
Console