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;
    }

 

posted @   iu本u  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示