返回节点

来源:5-7 删除最大值,最小值

wang_liu

2017-06-02

Node* removeMin(Node* node) {
    if (node->left == NULL) {
        Node* rightNode = node->right;
        delete node;
        count--;
        return rightNode;
    }
    node->left = removeMin(node->left);
    return node;        //  ???  返回的这个节点到底是那个节点 
}

老师,删除最小节点时 ,最后返回的这个节点,我有一点模糊,到底是返回的是哪个节点 ,比如这颗树 要删除 节点 22   

  41
 /
22
  \
   33

   return node;        //  ???  返回的这个节点到底是哪个节点      是 41 ?      

写回答

1回答

liuyubobobo

2017-06-03

这个函数的语意是:在以node为根的二叉树中,删除掉最小节点,返回删除了最小节点以后新的二叉树的根节点

所以,是的。在你的例子中,当对以41为根的二叉树调用removeMin(node*=41所在的节点)时,返回的是41这个节点,只不过返回的这个以41为根的二叉树,已经变成了这个样子

41 <- 返回的根节点
  \
   33


1
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11186 学习 · 1614 问题

查看课程