衍生出来的大O符号我为一些二叉树问题编写了一些代码...代码如下,它继续沿着左边的树回答yes,右边的答案no并返回外部节点,如果它到达一个。了解从代码
用Java编写的,
public static int price(BinaryTree<Integer> t, boolean[] p) {
Position<Integer> root = t.root(); //1
while (t.isInternal(root)) { //2
int element = root.element(); // 3
if (!p[element]) { //4
root = t.getRight(root);//5
}
if (p[element]) { //6
root = t.getLeft(root); //7
}
}
int price = root.element(); //8
return price; //9
}
在计算大OI认为最好号码在评论中码以上步骤...我也跟着从这里
Big O, how do you calculate/approximate it?
的例子因此,上面的1-9应该等同于类似的东西,其中C
是常数,???
是我的循环(其中N是给定数据结构的输入数)
C + ??? + C + ??? + C + ??? + C + C + C
我while
循环是我认为C*N
或(O(N))
相当,但C*N
现在)和我的两个if
语句应该是(对于时间索引复杂O(1)
...和O(N)
空间的复杂性,我会坚持随着时间的推移,现在的复杂性)
所以现在我应该(去掉C
元素的事业,他们是常数,不真正的问题)
C*N + C + C
的时间复杂度
和
C*N + C*N + C*N
空间复杂
含义我
C*N
或O (N)
的时间复杂度和空间复杂度
O(3N)
可视为O(N)
.. 。
所以我的问题是,我是否正确地做了这件事,如果不是我哪里出错了?
谢谢
编辑:
树向左移动提供一个真正的(是)回答或右侧给出一个否定的。内部节点编号从0到m-1,用于树中m个内部节点。因此,如果在根,内部节点0处给出no,并且因此向右移动,则该内部节点可能是节点3,因此布尔答案在p [3]而不是p [1],因为p [1]是答案对于节点1,即问题1.道歉混淆
是什么'answers'?树是否平衡? – amit
@amit是均衡的,答案是数组中的布尔值。抱歉,错误意味着“p”不是答案 – Jim
据我所知。 – Theolodis