以下執行二叉樹遍歷的時間複雜度是多少?基於堆棧的樹遍歷的時間複雜度
void Tree::nonRecInOrder()
{
// nonrecursive inOrder Traversal using Stack
Stack< TreeNode* > s ; // declare and initialize stack
TreeNode* currentNode = root ;
while(true)
{
while(currentNode)
{
// move down leftChild fields
s.add(currentNode) ;
currentNode = currentNode->leftChild ;
}
if(! s.isEmpty()) // stack is not empty
{
currentNode = *s.del(currentNode) ; // delete from stack
cout << currentNode->data ;
currentNode = currentNode->rightChild ;
}
else
{
break ;
}
}
}
你能否解釋一下如何計算複雜性?