範囲クエリ ([x,y] 内のすべてのキー) からキーのベクトルを返すテンプレートに基づいたコードを書くように依頼されました。我慢してください、私は再帰にもかなり慣れていません。
template <typename Key, typename Value>
vector<<BSTNode<Key, Value>*> range_query(BSTNode<Key, Value>* root,Key key1,Key key2) {
vector<BSTNode<Key, Value>*> found;
if(key1 > key2) return found;
while(root != NULL){
range_query(root->left,key1,key2);
range_query(root->right,key1,key2);
if(root->key >= key1 && root->key <= key2) found.push_back(root);
}
ベクター内では順序は重要ではないと想定しているので、これはベクター内のキーをトラバースして保存する正しい方法でしょうか? また、再帰の最後に完成したベクトルを返すにはどうすればよいですか?