diff options
Diffstat (limited to 'other/range_sum_bst.cpp')
-rw-r--r-- | other/range_sum_bst.cpp | 22 |
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; + } +}; |