在学习二叉树的过程中,遇到一种函数定义方式:
template <typename T,typename VST>
void traverse(BinNodePosi(T) x,VST&visit)
{
if(!x)
return;
visit(x->data);
traverse(x->lChild,visit);
traverse(x->rChild,visit);
}
此函数的目的是前序递归遍历二叉树的数据,traverse 的第二个输入参数VST&visit实质上为一函数,函数的作用是输出节点数据。
此时visit可自定义,参见如下示例:
typedef int(*VST)(int);//声明指针函数VST
int show(int in)
{
printf("%d",in);
return 0;
}
int traverse(int a, VST&visit)
{
visit(a);
return 0;
}
int main()
{
int a=10;
VST p=show;
traverse(a, p);
return 0;
}
函数运行输出10.