#include <bits/stdc++.h>
using namespace std;
class Node {
public:
int val;
Node *left, *right;
};
Node* newNode(int item)
{
Node* temp = new Node();
temp->val = item;
temp->left = temp->right = NULL;
return temp;
}
int sum = 0;
int rangeSumBST(Node* root, int low,
int high)
{
if (root == NULL)
return 0;
queue<Node*> q;
q.push(root);
while (q.empty() == false) {
Node* curr = q.front();
q.pop();
if (curr->val >= low
&& curr->val <= high) {
sum += curr->val;
}
if (curr->left != NULL
&& curr->val > low)
q.push(curr->left);
if (curr->right != NULL
&& curr->val < high)
q.push(curr->right);
}
return sum;
}
Node* insert(Node* node, int data)
{
if (node == NULL)
return newNode(data);
if (data <= node->val)
node->left = insert(node->left,
data);
else
node->right = insert(node->right,
data);
return node;
}
int main()
{
Node* root = NULL;
root = insert(root, 10);
insert(root, 5);
insert(root, 15);
insert(root, 3);
insert(root, 7);
insert(root, 18);
int L = 7, R = 15;
cout << rangeSumBST(root, L, R);
return 0;
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
0 comments:
Post a Comment