aboutsummaryrefslogtreecommitdiff
path: root/other/range_sum_bst.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/range_sum_bst.cpp')
-rw-r--r--other/range_sum_bst.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/other/range_sum_bst.cpp b/other/range_sum_bst.cpp
new file mode 100644
index 0000000..046aee2
--- /dev/null
+++ b/other/range_sum_bst.cpp
@@ -0,0 +1,22 @@
+#include "leetcode.h"
+
+class Solution {
+public:
+ int rangeSumBST(TreeNode *root, int low, int high) {
+ queue<TreeNode *> q;
+ q.push(root);
+ int sum = 0, v;
+ while (q.size()) {
+ root = q.front();
+ q.pop();
+ v = root->val;
+ if (v >= low && v <= high)
+ sum += v;
+ if (v > low && root->left)
+ q.push(root->left);
+ if (v < high && root->right)
+ q.push(root->right);
+ }
+ return sum;
+ }
+};