问答详情
源自:6-6 二叉树编码实战(六))

关于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 ;

提问者:慕斯5158549 2019-06-24 18:04

个回答

  • weixin_慕前端3472905
    2020-02-26 13:30:03

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

  • 国宝阿宝
    2019-08-12 18:22:43

    well