方法

    1. class Solution {
    2. public:
    3. int right_h(TreeNode* root){
    4. while(root->left){
    5. root=root->left;
    6. }
    7. return root->val;
    8. }
    9. int left_h(TreeNode* root){
    10. while(root->right){
    11. root=root->right;
    12. }
    13. return root->val;
    14. }
    15. TreeNode* deleteNode(TreeNode* root, int key) {
    16. if(root==nullptr){
    17. return root;
    18. }
    19. if(root->val>key){
    20. root->left=deleteNode(root->left,key);
    21. }
    22. else if(root->val<key){
    23. root->right=deleteNode(root->right,key);
    24. }else{
    25. if(!root->right&&!root->left){
    26. root=nullptr;
    27. }else if(root->right){
    28. int temp=right_h(root->right);
    29. root->val=temp;
    30. root->right=deleteNode(root->right,root->val);
    31. }else if(root->left){
    32. int temp=left_h(root->left);
    33. root->val=temp;
    34. root->left=deleteNode(root->left,root->val);
    35. }
    36. }
    37. return root;
    38. }
    39. };