Skip to content
Related Articles
GATE | GATE-CS-2014-(Set-3) | Question 65
• Difficulty Level : Medium
• Last Updated : 18 Apr, 2014

Suppose we have a balanced binary search tree T holding n numbers. We are given two numbers L and H and wish to sum up all the numbers in T that lie between L and H. Suppose there are m such numbers in T. If the tightest upper bound on the time to
compute the sum is O(nalogb n + mc logd n), the value of a + 10b + 100c + 1000d is ____.
(A) 60
(B) 110
(C) 210
(D) 50

Answer: (B)

Explanation:

```int getSum(node *root, int L, int H)
{
// Base Case
if (root == NULL)
return 0;

if (root->key < L)
return getSum(root->right, L, H);

if (root->key > H)
return getSum(root->left, L, H)

if (root->key >= L && root->key <=H)
return getSum(root->left, L, H) + root->key +
getSum(root->right, L, H);
}```

The above always takes O(m + Logn) time. Note that the code first traverses across height to find the node which lies in range.  Once such a node is found, it recurs for left and right children. Two recursive calls are made only if the node is in range. So for every node that is in range, we make at most one extra call (here extra call means calling for a node that is not in range).

Quiz of this Question

Attention reader! Don’t stop learning now. Learn all GATE CS concepts with Free Live Classes on our youtube channel.

My Personal Notes arrow_drop_up