【发布时间】:2021-10-20 13:38:21
【问题描述】:
我正在尝试计算我在 Javq 中编写的函数的运行时间,我编写了一个函数来计算 BT 中所有正确子项的总和。
我在函数中使用了递归,但我并不真正了解如何在递归中计算运行时间,但在 BT 中更是如此(刚开始学习该主题)。
这是我写的代码:
public int sumOfRightChildren(){
return sumOfRightChildren(this.root);
}
private int sumOfRightChildren(Node root){
if(root == null) //O(1)
return 0;//O(1)
int sum = 0;//O(1)
if(root.right != null)//O(1)
sum+=root.right.data;//O(1)
sum += sumOfRightChildren(root.right); //worst case O(n) ?
if(root.left != null)
{
sum += sumOfRightChildren(root.left);//worst case O(n)?
}
return sum;
}
我尝试写下我认为需要的运行时,但我认为我做得不对。 如果有人可以帮助指导我,我将非常感激。
我正在尝试计算 T(n)。
【问题讨论】:
-
这能回答你的问题吗? How do I time a method's execution in Java?
-
我并不是真的想用数学方法计算 T(n)。
-
为什么对你没有帮助?您将以纳秒为单位获得执行时间,然后转换为常规秒数或任何您需要的时间
-
我试图找出最坏情况的运行时间。嗯,就像在女巫函数族(n,n^2,nlogn,logn ...)中一样T(n-1)+5 并找出最坏情况的运行时间。不是字面意思得到它运行所花费的时间。
-
换句话说,我试图在函数中找到递归调用的数学表达式。
标签: java recursion runtime binary-tree