假設樹是平衡的,那麼例行程序將爲多少個1,000,000個元素的樹使用多少堆棧空間?這個例程使用多少堆棧空間?
void printTree(const Node *node) {
char buffer[1000];
if(node) {
printTree(node->left);
getNodeAsString(node, buffer);
puts(buffer);
printTree(node->right);
}
}
這是在「程序員修煉」的算法中的問題之一,得到的答覆是需要21個緩衝區(LG(1M)〜= 20,與另外1在最頂部)
但我我認爲它需要多於一個低於頂層的緩衝區,這是由於對於左右節點的2次調用。有什麼我錯過了嗎?
*對不起,但這真的不是作業。請勿在本站的勘誤表上看到這一點。
主要部分是'char buffer [1000];'和它的堆棧大小非常依賴於語言。 –