寻找二叉树中任意节点的父节点

gaoyuanfeng 2009-04-10 08:58:32
现在我任意建立一棵二叉树,我要返回该二叉树中任意节点的父节点,用了一下递归算法,可是老是报错,该怎么解决呢?请大家指教,代码如下(确定其他部分正确):
LinkNode* BinTree::getParent(LinkNode* current,LinkNode* parent,bool flag=true)//返回current节点的父节点
{
if(parent==NULL || parent->Isleaf())
{
flag=false;
return NULL;
}
if(parent->getLChild()==current || parent->getRChild()==current)
{
return parent;
}
//返回值与递归的先后顺序有关,我该怎么解决呢?
else
{
getParent(current,parent->getRChild());
if(flag==false)
{
getParent(current,root->getLChild());
}
}

请大家帮忙给出一个可行的代码好吗?谢谢啦!
...全文
1582 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wahahahf 2011-11-29
  • 打赏
  • 举报
回复
明显错误[Quote=引用 1 楼 zhanghuayi_xiyou 的回复:]

LinkNode* parent改为二级指针LinkNode **parent,递归的返回值使用void,当满足条件时,直接
修改*parent。这样就不用返回值了。
[/Quote]
ztenv 2009-04-10
  • 打赏
  • 举报
回复
void BinTree::getParent(LinkNode* current,LinkNode** parent)//返回current节点的父节点
{
if(parent==NULL || parent->Isleaf())
{
return;
}

if(parent->leftChild==current)
{
parent=&(parent->leftChild);
return;
}else if(parent->rightChild==current)
{
parent=&(parent->rightChild);
return;
}

getParent(current, &(parent->leftChild));
getparent(current,&(parent->rightChild));
}

未经调试,不知道写得对与不对;

zhanghuayi_xiyou 2009-04-10
  • 打赏
  • 举报
回复
LinkNode* parent改为二级指针LinkNode **parent,递归的返回值使用void,当满足条件时,直接
修改*parent。这样就不用返回值了。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧