Skip to content

Instantly share code, notes, and snippets.

@allen501pc
Created May 21, 2010 02:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save allen501pc/408383 to your computer and use it in GitHub Desktop.
Save allen501pc/408383 to your computer and use it in GitHub Desktop.
/* Class: CAlgo
* T : type of "Node" , with begin() , end() and operator++
* ClassC1 : the implemented class , must have operator()
*/
template<typename T,typename ClassC1 >
class CAlgo : public ClassC1
{
protected:
void DFS(T * ptrNode, ClassC1 *ptrObj )
{
(*ptrObj)();
for( T * ptrTempNode = ptrNode->begin(); ptrTempNode != ptrNode->end(); ++ ptrTempNode )
{
DFS(ptrTempNode, ptrObj);
}
}
public:
void DFSbyRoot(T * ptrNode, ClassC1 *ptrObj)
{
for( T * ptrTempNode = ptrNode->begin(); ptrTempNode != ptrNode->end(); ++ ptrTempNode )
{
DFS(ptrTempNode, ptrObj);
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment