首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

寻找二叉树中任意节点的父节点,该如何解决

2012-02-26 
寻找二叉树中任意节点的父节点现在我任意建立一棵二叉树,我要返回该二叉树中任意节点的父节点,用了一下递

寻找二叉树中任意节点的父节点
现在我任意建立一棵二叉树,我要返回该二叉树中任意节点的父节点,用了一下递归算法,可是老是报错,该怎么解决呢?请大家指教,代码如下(确定其他部分正确):
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));
}

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

热点排行