为了账号安全,请及时绑定邮箱和手机立即绑定

关于searchnode函数的一点解析,这里想了好长时间才转过来!

 

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 ;

正在回答

2 回答

我觉得这代码有问题吧,视频中删除的最右边那个节点,按照这个搜寻方法,当遍历到最左边这个节点时,此时this指的是最左边的指针,这样他肯定不会进入第二个if语句

0 回复 有任何疑惑可以回复我~

well


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于searchnode函数的一点解析,这里想了好长时间才转过来!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信