编写一个函数来打印出值为v的二叉搜索树的所有项目,使得min_val≤v≤max_val。
您可以从以下原型开始: 模板 空虚 BSTree :: PrintRange(const Comparable& min_val, const Comparable& max_val)const;
根据节点数n和节点数分析函数的运行时间 使用O(Big-Oh)表示法在范围内的元素k数。
非常感谢。
答案 0 :(得分:0)
您可以通过简单的双递归来完成。
BSTree::PrintRange( const Comparable & min_val, const Comparable & max_val ) const
{
if(min_val<=v && v<=max_value)
{
print(v);
if(left!=NULL)
left.PrintRange(min_val,max_val);
if(right!=NULL)
right.PrintRange(min_val,max_val);
}
else if(v<min_val) //go to the right to find a bigger value
{
if(right!=NULL)
right.PrintRange(min_val,max_val);
}
else //v>max_val
{ //go to the left to find a smaller value
if(left != NULL)
left.PrintRange(min_val,max_val);
}
}