알고리즘 & 자료구조/알고리즘&자료구조
스택을 이용한 전위 순회 (트리)
3DMP
2012. 10. 31. 15:39
재귀적인 방법은 속도가 떨어짐으로 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 다른 순회 들을 스택으로 바꿀려면 이보다는 쉽지 않다
반응형