BSTの場合、[a、b]のノードの値を最大値から最小値の形式で見つけたいと思います。私が考えることができる最も簡単な方法は次のとおりです。
void printRange(BSTNode<Key,E>* root,int lowValue,int highValue) const
{
if(root==NULL) return;
printRange(root->right(),lowValue,highValue);
if(root->key()>=lowValue&&root->key()<=highValue)
cout<<root->key()<<" ";
printRange(root->left(),lowValue,highValue);
}
しかし、訪問するノードを減らしてこれらの値を出力する方法があるかどうか知りたいですか?