慕斯5158549
2019-06-24 18:04
Node *Node::SearchNode(int nodeindex)
{
if(this->index==nodeindex)//查找当前节点
return this;
if(this->pLChild!=NULL)//查找左子节点
{
if(this->pLChild->index==nodeindex)
return this->pLChild;
else if (this->pLChild->SearchNode(nodeindex))
return this->pLChild->SearchNode(nodeindex);
else//查找右子节点
{
if(this->pRChild!=NULL)
{
if(this->pRChild->index==nodeindex)
return this->pRChild;
if(this->pRChild->SearchNode(nodeindex))
return this->pRChild->SearchNode(nodeindex);
}
}
}
return NULL;
}
其实最简单的方法就是仿照遍历函数,搜索只是多了一个限定条件;
这里searchnode函数的返回值是node类型;
只能有一个return null ;
我觉得这代码有问题吧,视频中删除的最右边那个节点,按照这个搜寻方法,当遍历到最左边这个节点时,此时this指的是最左边的指针,这样他肯定不会进入第二个if语句
well
数据结构探险之树篇
56461 学习 · 116 问题
相似问题