재귀적인 방법은 속도가 떨어짐으로 iteration 한 방법으로 다시 구성한다

PreOrder_UsedStack( Node* pNode ) // pNode 이중 리스트형태로 트리를 구상하고 있는 노드

{

ListStack<Node*> stack;

stack.push( pNode );

while( !stack.IsEmpty() ){

pNode = stack.Pop();

if( pNode != m_pNodeTail )

{

visit(pNode);

stack.Push( pNode->pRight );

stack.Push( pNode->pLeft );

}

}

}

스택에 쌓아 가면서 순회한다, 재귀로 구성되지 않는다

트리로 구서되어 있는 pNode 는 헤드 노드와 꼬리 노드를 가상노들 가지고 있는 이중연결 리스트 트리이다

참고 : http://www.cyworld.com/sjh0628/6852486

but 다른 순회 들을 스택으로 바꿀려면 이보다는 쉽지 않다

반응형

+ Recent posts