算法思想:
①遍历,存储一个临时father;
②找孩子,如果孩子是结点,则输出father,如果不是,重复①。
typedef struct BTNode{
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode,*BiTree;
BiTree function(BiTree T,BiTree target){ //target为目标结点
if(!T || T==target){
return NULL;
}
BiTree Q[MAXSIZE],p,father=NULL;
int front=-1,rear=-1;
Q[++rear]=T;
while(front<rear){
p=Q[++front];
father=p; //可能是father,暂时存储
if(p->lchild){ //开始找下一层
p=p->lchild;
Q[++rear]=p;
if(p==target){ //如果是
return father;
}
while(p-&g