재귀적인 방법은 속도가 떨어짐으로 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 다른 순회 들을 스택으로 바꿀려면 이보다는 쉽지 않다
반응형
'알고리즘 & 자료구조 > 알고리즘&자료구조' 카테고리의 다른 글
재귀호출의 요건 (0) | 2012.10.31 |
---|---|
수식트리(Parse Tree) (0) | 2012.10.31 |
트리순회(Tree Traversal) 전위, 중위, 후위, 레벨순회 (0) | 2012.10.31 |
이진트리 모델링 (0) | 2012.10.31 |
트리(Tree) (0) | 2012.10.31 |