バイナリ ヒープ構造を含む次のアルゴリズムを実行しました。
Algorithm: heapMinimum(node)
Input : Position n
Output : Sequence minList; containing the postions that hold the minimum value
1. minList <-- sequence
2. if parent(node) == NULL // current node is the root of the tree
3. minList.insertLast(node)
4. if (leftchild(node).element() == node.element())
5. concat(heapMinimum(leftchild(node), minList))
6. if(right(node).element() == node.element())
7. concat(heapMinimum(rightChild(node), minList))
8. return minList
アルゴリズムが行うことは、基本的に、ルートを指定して Binary Heap をトラバースし、最小値 (つまり、ルートの値と一致する値) を保持するノードを見つけて格納することです。
現在、アルゴリズムの実行時間を Big O 表記で計算するのに問題があります。私が混乱している理由は、各ノードの左右の子をトラバースするために使用される再帰のためです。
O(1)
を除くすべての操作は一定時間で実行されconcat
ます。しかし、このような再帰的なソリューションの実行時間を正確に計算するにはどうすればよいでしょうか?