关于return ERROR和return OK 作用的有关问题

关于return ERROR和return OK 作用的问题
例如下边的函数:
int PreOrderTraverse(BiTree T,int (*visit)(int e))
{
  if(T)
  {
  if(Visit(T->data))
  if(PreOrderTraverse(T->lchild,Visit))
  if(PreOrderTraverse(T->rchild,Visit))
  return OK;
  return ERROR;
  }
  else
  return OK;
}
这里边的return语句都是什么作用?我记得return ERROR可以终止程序,他是终止整个递归,还是只终止其中的某一次递归调用?还是都不是啊?麻烦知道的指教一下这里边return OK 和 return ERROR的作用
 

------解决方案--------------------
C/C++ code
int PreOrderTraverse(BiTree T,int (*visit)(int e))
{
  if(T)
    {
    if(Visit(T->data))
      if(PreOrderTraverse(T->lchild,Visit))
        if(PreOrderTraverse(T->rchild,Visit))
          return OK;
    return ERROR;
    }
  else
    return OK;
}