二进制搜索树中Java方法的成本

时间:2015-12-08 18:43:47

标签: java algorithm binary-search-tree

我们有Java方法rangeQuery_count(BSTNode,int,int)。给定BST(keys int)和interval [a,b]的根,此方法返回属于该区间的BST的键数。

static int rangeQuery_count(BSTNode v, int a, int b) { //a<=b
   if(v==null) return 0;
   if(v.key < a) return rangeQuery_count(v.right, a, b);
   else if(v.key > b) return rangeQuery_count(v.left, a, b);
   else return 1 + rangeQuery_count(v.right, a, b) + rangeQuery_count(v.left, a, b);
}

我必须根据BST的节点数n来确定算法成本的渐近估计。我刚刚开始研究这些主题,我想了解如何计算程序的成本。

1 个答案:

答案 0 :(得分:2)

首先要认识到的是,成本取决于输入参数的特定值,在您的情况下,它取决于搜索树中有多少节点落在区间内。这里通常的简化假设是计算最坏的情况。在这种情况下,将在树中的所有节点都位于该间隔内时。在这种情况下,只要v不为null,您将始终使用else的final子句,您将访问树的每个节点一次,如果树中有n个节点,则成本将与n大致线性上升。 / p>