두 갈래 트리 사이의 비반복 - - 앞, 가운데, 뒤쪽

컴포지팅 트리를 사용하면 시스템이 프로그램에 분배된 스텔스 창고를 호출한다. 다음은 위조 코드의 형식으로 앞차례, 중차례, 뒷차례가 두 갈래 트리를 컴포지팅하는 비컴포지팅 방법을 소개한다.
이전 순서:
Status preOrder(BiTree T, Status (*Visit)(TElemType e)) {
	InitStack(S); p = T;
	while(p || !StackEmpty(S))  {
		while(p) {
			visit(p->data);
			push(S,p);
			p = p->lchild;
		}
		if(!StackEmpty(S)) {
			pop(S,p);
			p = p->rchild;
		}
	}
}

중간 순서 반복:
Status InOrder(BiTree T, Status (*Visit)(TElemType e)) {
	InitStack(S); p = T;
	while(p || !StackEmpty(S)) {
		if(p) {
			push(S,p);
			p = p->lchild;
		}
		else {
			pop(S,p);
			visit(p->data);
			p = p->rchild;
		}
	}
}

다음 순서 반복:
//                  ,       :
Status postOrder(BiTree T, Status (*Visit)(TElemType e)) {
	InitStack(S); p = T;
	while(p || !StackEmpty(S)) {
		while(p) {
			push(S,p);
			p = p->lchild;
		}
		if(!StackEmpty(S)) {
			sn = top(S);
			if(!sn->rchild || sn.rchildVisited) {
				pop(S,p);
				visit(p);
			}
			else {
				sn.rchildVisited = 1;
				p = sn->rchild;
			}
		}
	}
}

References:
[1] 데이터 구조(C언어판) 엄울민 오위민 편저

좋은 웹페이지 즐겨찾기