衍生出來的大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