-
Notifications
You must be signed in to change notification settings - Fork 22
/
count bst nodes that lie in a given range
55 lines (44 loc) · 1.46 KB
/
count bst nodes that lie in a given range
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
Given a Binary Search Tree (BST) and a range l-h(inclusive), count the number of nodes in the BST that lie in the given range.
The values smaller than root go to the left side
The values greater and equal to the root go to the right side
Input Format:
The first line of the input contains an integer 'T' denoting the number 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:
For each testcase, in a new line, output the number of nodes that lie in the range l-h.
Your Task:
This is a function problem. You don't have to take input. You are required to complete the function getCountOfNode() that takes root, l ,h
as parameters and returns the count.
Constraints:
1 <= T <= 100
1 <= N <= 100
1 <= l < h < 103
Example:
Input:
2
6
10 5 50 1 40 100
5 45
5
5 6 7 4 3
2 8
Output:
3
5
*/
void countUtil(Node *root, int l , int r, int &c){
if(!root) return;
if(root->data>=l && root->data<=r) c++;
countUtil(root->left,l,r,c);
countUtil(root->right,l,r,c);
}
int getCountOfNode(Node *root, int l, int h)
{
int count=0;
countUtil(root,l,h,count);
return count;
}