2011-04-03 81 views
0

我正在为期中学习。任何人都可以帮助我从我的课本开始处理这个问题吗?需要学习二叉搜索树的帮助伪代码

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

您可以从以下原型启动: 模板 无效 BSTree :: PrintRange(常量可比& MIN_VAL, 常量可比& MAX_VAL)常量;

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

非常感谢。

回答

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

} 
+0

运行时间实际上是O(logN)其中N是树中节点的数量。 – user183037 2011-04-04 04:07:26