双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

二叉树节点删除问题

死咸鱼的成长之路 死咸鱼的成长之路 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个树的创建
private:
struct Node
{
Key key;
Value value;
Node *left;
Node *right;
Node( Key key , Value value )
{
this->key = key;
this->left = this->right = NULL;
}
};
Node* root;
int count;

Node*removemininum(Node* node){
if( node->left == NULL ){
Node* rightNode = node->right;
delete node;
count --;
return rightNode;
}
node->left = removemininum(node->left);
return node;
}
上面这个函数是视频给的 功能是删除树中最小值所在的节点 能成功运行 但是我想改一下 如下:
void removemininum(Node* node){
if( node->left == NULL ){
Node* rightNode = node->right;
delete node;
count --;
}
removemininum(node->left);
}
虽然编译没报错 但是运行有错误

调试也显示以下提示:

这两个函数传进的实参都是整棵树的根节点 但是为什么必须要返回 函数功能是删除最大值的节点 那么找到最大值所在的节点然后要么直接delete释放 如果有孩子就改变此节点的父节点指针指向的位置不就行吗 。 我这个想法错在哪里 大佬指点
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
死咸鱼的成长之路
C++ 语言 65,214 成员 250,514 内容