【问题标题】:Need Help with Studying Binary Search Tree Pseudo-code在学习二叉搜索树伪代码方面需要帮助
【发布时间】:2011-04-04 23:37:53
【问题描述】:

我正在准备期中考试。谁能帮我从我的教科书中开始回答这个问题?

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

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

根据节点数 n 和 使用 O(Big-Oh)表示法的范围内元素 k 的数量。

非常感谢。

【问题讨论】:

    标签: binary-tree binary-search


    【解决方案1】:

    您可以通过简单的双重递归来做到这一点。

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

    【讨论】:

    • 运行时间实际上是 O(logN) 其中 N 是树中的节点数。
    猜你喜欢
    • 2020-08-03
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多