Пример #1
0
void CObBinTree::PreOrderVisit(CObBinTree::CNode* pNode)
{
	ASSERT( m_pfnVisit!=NULL );

	if( m_bTvStop )return;
	if( !(*m_pfnVisit)(pNode->data, m_lpTvParam) )m_bTvStop=TRUE;
	if( pNode->pLChild )PreOrderVisit( pNode->pLChild );
	if( pNode->pRChild )PreOrderVisit( pNode->pRChild );
}
Пример #2
0
void CObBinTree::WalkTree( CObBinTree::TV_FUNC pfnVisit, LPVOID lpParam, int nTvOrder )
{
	ASSERT( pfnVisit!=NULL );

	if( IsEmpty() )return;

	m_lpTvParam = lpParam;
	m_pfnVisit = pfnVisit;
	m_bTvStop = FALSE;

	ASSERT( m_pNodeRoot!=NULL );
	switch(nTvOrder){
	case TV_PREORDER:
		PreOrderVisit(m_pNodeRoot);
		break;
	case TV_INORDER:
		InOrderVisit(m_pNodeRoot);
		break;
	case TV_POSTORDER:
		PostOrderVisit(m_pNodeRoot);
		break;
	default:
		ASSERT(FALSE);
	}
	m_lpTvParam = NULL;
	m_pfnVisit = NULL;
	m_bTvStop = FALSE;
}
Пример #3
0
void BST < Filler > :: PreOrderVisit ( NODO < Filler > * Nodo ){
    if ( this && Nodo ){
        Nodo->PrintNODO ();
        //Left
        if ( Nodo->GetLeft () ){
            PreOrderVisit ( Nodo->GetLeft () );
        }
        else{
            std :: cout << "*" << std :: endl;
        }
        //Right
        if ( Nodo->GetRight () ){
            PreOrderVisit ( Nodo->GetRight () );
        }
        else{
            std :: cout << "*" << std :: endl;
        }
    }
    else{
        std :: cout << "L`Albero E`Vuoto!!!" << std :: endl;
    }
}
Пример #4
0
int main() {
    BiTree T;
    
    CreateTree(T);
    printf("Visit Tree in PreOrder  :\n");
    PreOrderVisit(T, VisitData);    putchar('\n');
    printf("Visit Tree in InOrder   :\n");
    InOrderVisit(T, VisitData);     putchar('\n');
    printf("Visit Tree in PostOrder :\n");
    PostOrderVisit(T, VisitData);   putchar('\n');
    
    return 0;
}