leetcode450删除搜索二叉树的节点
删除的二叉树节点分4种情况:
- 叶子节点,直接删除就行
- 左节点不为空,右节点为空;直接将左子树返回
- 左节点为空,右节点不为空;直接将右子树返回
- 左节点和右节点不为空;将右子树最小的节点作为根节点,返回右子树
TreeNode* deleteNode(TreeNode* root, int key) {
if(!root)return nullptr;
if(root->val==key){
if(!root->left&&!root->right){
return nullptr;
}else if(!root->left&&root->right){
return root->right;
}else if(root->left&&!root->right){
return root->left;
}else{
TreeNode* node=root->right;
while(node->left)node=node->left;
node->left=root->left;
return root->right;
}
}
if(key>root->val)root->right=deleteNode(root->right,key);
if(key<root->val)root->left=deleteNode(root->left,key);
return root;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?