题目
解法:不断打补丁
class Solution {
List<Integer> list = new ArrayList<>();
public TreeNode trimBST(TreeNode root, int low, int high) {
traverval(root);
int min = list.get(0);
int max = list.get(list.size() - 1);
for(int i = min ;i < low ;i++){
root = deleteNode(root, i);
}for(int i = high + 1 ;i <= max ;i++){
root = deleteNode(root, i);
}
return root;
}
public void traverval(TreeNode root) {
if (root == null) {
return;
}
traverval(root.left);
list.add(root.val);
traverval(root.right);
}
public TreeNode deleteNode(TreeNode root, int key) {
if(root == null){
return null;
}
if(root.val == key){
if(root.left == null){
return root.right;
} else if (root.right == null) {
return root.left;
}else{
TreeNode index = root.right;
while(index.left != null){
index = index.left;
}
index.left = root.left;
root = root.right;
}
}else if(root.val > key){
root.left = deleteNode(root.left, key);
}else{
root.right = deleteNode(root.right, key);
}
return root;
}
}