有fnc:
bool ISINTREE( int x, BinTree<int> t)
{
bool b = false
if (!t.isEmpty())
{
if (x == t.getRoot())
{ b = true }
else
{
if (ISINTREE(x,t.leftTree()))
{ b = true }
if (ISINTREE(x,t.rightTree()))
{ b = true }
}
}
return b
}
如何证明(使用数学归纳法)T(n)= 11×2 ^ n - 7是一个解 这个fnc的重复系统。
EDITED
设F(n)= 11 * 2 ^ n - 7
现在,
对于k> 0
T(k-1)= F(k-1)= 11 * 2 ^(k-1)-7
T(k)= 7 + 2 *(T(k-1))
= 7 + 2 *(11 * 2 ^(k-1)-7)
= 11 * 2 ^ k -7
答案 0 :(得分:2)
这里n
是什么?树中的元素数量?如果是这样,我们可以肯定地说,在最坏的情况下,这个算法会访问树中的每个节点,所以运行时最坏的情况是T(n) = n
,在这种情况下是前提(这是{ {1}})无效。
<强>更新强>
为了满足这种不确定性,让我们来看看最坏的情况(要查找的项目不在树中)。不失一般性,让我们假设我们正在寻找一个完美平衡的树,即每个子树都有T(n) = 11 . 2^n - 7
个元素。因此,在这些假设下,递归关系是:
(n-1)/2
(我说这里只有4个可执行操作,但为了简单起见,我们称之为7)。
显然,T(n) = 2.T((n-1)/2) + 7
不是这种关系的解决方案。