669.trim-a-binary-search-tree(do

2020-05-26  本文已影响0人  Optimization
问题:

1.为什么把其他不用的节点删除会有问题->问题是内存泄漏,没想清楚->不能delete(韩总).
2.为什么能把节点删除呢?->用简单的例子来试一下
3.为什么把把断的进行桥接呢?

正文:
class Solution {
public:
    TreeNode* trimBST(TreeNode* root, int L, int R) {
        if(!root) return root;
        if(root->val < L) {
            TreeNode* result = trimBST(root->right, L, R);
            // deleteNode(root->left);
            // delete root;
            // root = nullptr;
            return result;
        } else if(root->val > R) {
            TreeNode* result = trimBST(root->left, L, R);
            // deleteNode(root->right);
            // delete root;
            // root = nullptr;
            return result;
        } else {
            root->left = trimBST(root->left, L, R);
            root->right = trimBST(root->right, L, R);
            return root;
        }   
    }
private:
    void deleteNode(TreeNode* root){
        if(!root) return;
        deleteNode(root->left);
        deleteNode(root->right);
        delete root;
        root = nullptr;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读