力扣-二叉树-450 删除二叉搜索树中的节点

思路

和向二叉搜索树插入节点一样,都可以利用递归完成不同节点的连接

代码

class Solution {
public:
    TreeNode* deleteNode(TreeNode* root, int key) {
        if(root == nullptr) return nullptr;
        if(root->val == key){
            if(root->left == nullptr && root->right == nullptr) return nullptr;
            if(root->left == nullptr && root->right != nullptr) return root->right;
            if(root->left!= nullptr && root->right == nullptr) return root->left;
            else{
                TreeNode* cur = root->right;
                while(cur->left){
                    cur = cur->left;
                }
                cur->left = root->left;
                return root->right;
            }
        }

        if(root->val < key){
            root->right = deleteNode(root->right, key);
        }else{
            root->left = deleteNode(root->left, key);
        }

        return root;
    }
};

你可能感兴趣的:(力扣,#,二叉树,leetcode,算法,数据结构)