阅读背景:

删除二叉搜索树的节点

来源:互联网 

450. Delete Node in a BST

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* deleteNode(TreeNode* root, int key) {
        if(root==NULL) return NULL;
        if(root->val>key) root->left = deleteNode(root->left,key);
        else if(root->val<key) root->right = deleteNode(root->right,key);
        else
        {
            if(!root->right || !root->left) root = (root->left?root->left:root->right);
            else
            {
                TreeNode *cur = root->right;
                while(cur->left) cur=cur->left;
                root->val = cur->val;
                root->right = deleteNode(root->right,cur->val);
            }
        }
        return root;
    }
};/**
 * Definition f



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: