寻找二叉树中任意节点的父节点
现在我任意建立一棵二叉树,我要返回该二叉树中任意节点的父节点,用了一下递归算法,可是老是报错,该怎么解决呢?请大家指教,代码如下(确定其他部分正确):
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());
}
}
请大家帮忙给出一个可行的代码好吗?谢谢啦!
[解决办法]
LinkNode* parent改为二级指针LinkNode **parent,递归的返回值使用void,当满足条件时,直接
修改*parent。这样就不用返回值了。
[解决办法]
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));
}
未经调试,不知道写得对与不对;