gpt4 book ai didi

c++ - 二进制搜索树中的递归堆栈

转载 作者:行者123 更新时间:2023-12-02 10:29:06 25 4
gpt4 key购买 nike

我正在尝试从二进制搜索树中删除节点。尽管此函数正常工作,为什么我们需要设置node-> m_left或node-> m_right来返回deletenode函数本身的值?很难理解这种递归结构。
当前仅对叶节点执行此操作

Node<T>*  deletenode(T key){
return deletenode(key,this->root);
}
Node<T>* deletenode(T key,Node<T>* node){
Node<T>* temp;
if(node==nullptr){
return node;
}
if(key<node->m_data){
node->m_left=deletenode(key,node->m_left);
}
if(key>node->m_data){
node->m_right=deletenode(key,node->m_right);
}



return temp;
}


最佳答案

您将向左或向右设置该分支上调用deletenode函数的结果,而不是函数本身。
递归的意思是:“如果我的树有一个左分支和一个右分支,并且要删除的项目在左分支中,则制作一个具有相同右分支的新树,但是删除要删除的项目的结果左分支为其左分支”

关于c++ - 二进制搜索树中的递归堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63035767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com