【发布时间】:2011-03-17 23:30:35
【问题描述】:
下面实现二叉树遍历的时间复杂度是多少?
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 ;
}
}
}
你能解释一下如何计算复杂度吗?
【问题讨论】:
标签: algorithm tree stack time-complexity traversal