力扣 669. 修剪二叉搜索树
class Solution {
public TreeNode trimBST(TreeNode root, int low, int high) {
if(root == null) return null;
if(root.val > high) {
TreeNode left = trimBST(root.left, low, high);
return left;
}
if(root.val < low) {
TreeNode right = trimBST(root.right, low, high);
return right;
}
root.right = trimBST(root.right, low, high);
root.left = trimBST(root.left, low, high);
return root;
}
}
力扣 108.将有序数组转换为二叉搜索树
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
return traversal(nums, 0, nums.length - 1);
}
public TreeNode traversal(int[] nums, int start, int end) {
if(start > end) return null;
int mid = (start + end) / 2;
int val = nums[mid];
TreeNode root = new TreeNode(val);
root.left = traversal(nums, start, mid - 1);
root.right = traversal(nums, mid + 1, end);
return root;
}
}
力扣 538.把二叉搜索树转换为累加树
class Solution {
public int sum = 0;
public TreeNode convertBST(TreeNode root) {
if(root == null) return null;
convertBST(root.right);
sum += root.val;
root.val = sum;
convertBST(root.left);
return root;
}
}