
4个回答
推荐于2017-11-26
展开全部
那你定义节点的时候需要有指向父节点的指针
要不然就只有递归遍历找了
要不然就只有递归遍历找了
展开全部
BinTNode* Parent(BinTree T, BinTNode* n) {
if (!T) return NULL;
if (T->lchild == n || T->rchild == n) {
return (T->lchild == n) ? T->lchild : T->rchild;
} else {
l_result = Parent(T->lchild, n);
r_result = Parent(T->rchild, n);
return l_result ? l_result : (r_result ? r_result : NULL);
}
}
if (!T) return NULL;
if (T->lchild == n || T->rchild == n) {
return (T->lchild == n) ? T->lchild : T->rchild;
} else {
l_result = Parent(T->lchild, n);
r_result = Parent(T->rchild, n);
return l_result ? l_result : (r_result ? r_result : NULL);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-08
展开全部
void parent( *t){ //t为二叉树根节点
if(t){
if(t->lchild->data == a || t->rchild->data == a){ //a为需要查找的二叉树节点值
printf(t->data); //输出父节点
else
{
parent(t->lchild);
parent(t->rchild);
}
}
}}
if(t){
if(t->lchild->data == a || t->rchild->data == a){ //a为需要查找的二叉树节点值
printf(t->data); //输出父节点
else
{
parent(t->lchild);
parent(t->rchild);
}
}
}}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-08
展开全部
用那个 递归方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询