11.Delete Node in a BST

https://leetcode.com/problems/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) {
            return root;
        }
        
        if (key < root->val) {
            root->left = deleteNode(root->left, key);
        } else if (key > root->val) {
            root->right = deleteNode(root->right, key);
        } else {
            if (root->left && root->right) {
                TreeNode* node = findMin(root->right);
                root->val = node->val;
                root->right = deleteNode(root->right, node->val);
            } else {
                root = root->left ? root->left : root->right;
            }
        }
    
        return root;
    }
    
    TreeNode* findMin(TreeNode* root) {
        if (!root) {
            return root;
        }
        
        while(root->left) {
            root = root->left;    
        }
        
        return root;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,921評論 0 33
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,876評論 2 45
  • 道可道, 非常道; 名可名, 非常名。 無名天地之始, 有名萬物之母。 故常無欲,以觀其妙;常有欲,以觀其徼。 此...
    道學(xué)部落閱讀 556評論 0 2
  • 晚上女兒聲樂老師發(fā)來微信,說這個周末如果有時間可以安排她去參加一個表演。 說來小姑娘學(xué)聲樂也不過短短三個月,也談不...
    Williamlora閱讀 929評論 1 1
  • 第一次去法國,三個城市都是比較愉快輕松的小鎮(zhèn)。 阿維妮翁 教皇宮 斷橋 巖石公園 渡輪 蒙彼利埃 戲劇廣場 小凱旋...
    八棵芹菜閱讀 513評論 0 0

友情鏈接更多精彩內(nèi)容