[英]Understanding the run time for a tree type data structure
我有一個數據結構,它是一棵樹,每個父級可以有無限多個孩子,樹的最大深度是4。每個級別是一個不同的類。
我的朋友寫了一個遍歷的算法,它由for循環組成,偽代碼如下:
root = tree.root();
for (int i = 0; i < root.children_size(); i++)
child1 = root.child(i);
for(int j = 0; j < child1.children_size(); j++)
child2 = child1.child(j);
for(int k = 0; k < child2.children_size(); k++)
child3 = child2.child(k);
他聲稱因為有3個for循環,所以該算法的運行時間為O(n3)。 當我問他什么是n時,他說的是for循環的數量,這沒有意義,因為n必須是樹中的結構。 我聲稱n是樹中整個節點的數量,該算法的運行時間為O(n),因為運行時間將為O(root.children_size + child1.children_size + child2.children_size)。
我對運行時間的假設是正確的O(n),還是我的朋友O(n ^ 3)?
你是對的。 訪問每個節點一次將使其變為O(N),其中N是總數。 樹中的節點數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.