以下执行二叉树遍历的时间复杂度是多少?基于堆栈的树遍历的时间复杂度
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 ;
}
}
}
你能否解释一下如何计算复杂性?