需要帮助学习二进制搜索树伪代码

时间:2011-04-03 19:33:27

标签: binary-tree binary-search

我正在学习期中考试。任何人都可以帮助我从我的教科书中开始提出这个问题吗?

编写一个函数来打印出值为v的二叉搜索树的所有项目,使得min_val≤v≤max_val。

您可以从以下原型开始: 模板 空虚 BSTree :: PrintRange(const Comparable& min_val, const Comparable& max_val)const;

根据节点数n和节点数分析函数的运行时间 使用O(Big-Oh)表示法在范围内的元素k数。

非常感谢。

1 个答案:

答案 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);
  }

}