Count BST nodes that lie in a given range

PROBLEM :

Given a Binary Search Tree (BST) and a range, count the number of nodes in the BST that lie in the given range. You are required to complete the function getCountOfNode. You should not read any input from stdin/console. There are multiple test cases. For each test case, this method will be called individually.


Input (only to be used for Expected Output):
The first line of the input contains an integer 'T' denoting the nummber of test cases. Then 'T' test cases follow. Each test case consists of three lines. Description of  test cases is as follows:
The First line of each test case contains an integer 'N' which denotes the no of nodes in the BST.   .
The Second line of each test case contains 'N' space separated values of the nodes in the BST.
The Third line of each test case contains two space separated integers 'l' and 'h' denoting the range, where l < h

Output:
You are required to complete the function getCountOfNode which takes three arguments. The first being the root of the tree, and then two integers l and h, denoting the range. The function returns an integer denoting the no of nodes in the given range.

Constraints:
1 <= T <= 50
1 <= N <= 50
1 <= l < h < 1000

Example:
Input
1
6
10 5 50 1 40 100
5 45

Output
3

--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------

/*

The structure of a BST node is as follows:

struct node {
int data;
struct node * right, * left;
};


*/

int getCountOfNode(node *root, int l, int h)
{
  if(root==NULL)
  return 0 ;
 
  if(root->data>=l&&root->data<=h)
        return(getCountOfNode(root->left,l,h)+getCountOfNode(root->right,l,h)+1) ;
  else if(root->data>=l)
        return(getCountOfNode(root->left,l,h)) ;
  else if(root->data<=h)
        return(getCountOfNode(root->right,l,h)) ;
  else
        return 0 ;
}

---------------------------------------------------------------------------------

Comments

Popular posts from this blog

Count ways to N'th Stair(Order does not matter)

Replace all ‘0’ with ‘5’ in an input Integer

Chocolate Distribution Problem

Remove characters from the first string which are present in the second string

Primality Test ( CodeChef Problem code: PRB01 )