已知二叉树中的结点类型STreeNode定义为:
struct STreeNode {
datatype data;
STreeNode *lchild, *rchild, *parent;};
其中data为结点值域,lchild和rchild分别为指向左、右子女结点的指针域,parent为指向父亲结点的指针域。
根据下面函数的定义指出函数的功能。算法中参数ST指向一棵二叉树,X保存一个结点的值。
STreeNode* PN(STreeNode* ST, datatype& X)
{
if(ST==NULL) return NULL;
else {
StreeNode* mt;
if(ST->data==X) return ST->parent;
else if(mt=PN(ST->lchild,X)) return mt;
else if(mt=PN(ST->rchild,X)) return mt;
return NULL;
}
}