问题:
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;
}
};
网友评论