using
System;
class
Node {
public
int
val;
public
Node left, right;
public
Node(
int
item) {
val = item;
left = right =
null
;
}
}
class
Sum {
public
int
sum = 0;
}
class
BinaryTree {
public
Node root;
public
Sum sum;
public
Node newNode(
int
item) {
return
new
Node(item);
}
public
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;
}
public
void
rangeSumBST(Node root,
int
low,
int
high) {
if
(root !=
null
) {
rangeSumBST(root.left, low, high);
if
(root.val >= low && root.val <= high) {
sum.sum += root.val;
}
rangeSumBST(root.right, low, high);
}
}
static
void
Main(
string
[] args) {
BinaryTree tree =
new
BinaryTree();
Sum sum =
new
Sum();
tree.sum = sum;
tree.root = tree.insert(tree.root, 10);
tree.insert(tree.root, 5);
tree.insert(tree.root, 15);
tree.insert(tree.root, 3);
tree.insert(tree.root, 7);
tree.insert(tree.root, 18);
int
L = 7;
int
R = 15;
tree.rangeSumBST(tree.root, L, R);
Console.WriteLine(sum.sum);
}
}