由易到难。
第一题 LeetCode 700.二叉搜索树中的搜索(简单)
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root == null || root.val == val){
return root;
}
if(root.val > val){
return searchBST(root.left, int val);
}
if(root.val < val){
return searchBST(root.right, int val);
}
return null;
}
}
第二题 LeetCode 701.二叉搜索树中的插入操作 (中等)
class Solution {
public TreeNode insertIntoBST(TreeNode root, int val) {
if(root == null){
return new TreeNode(val);
}
if(root.val > val){
root.left = insertIntoBST(root.left, int val);
}
if(root.val < val){
root.right = insertIntoBST(root.right, int val);
}
return root;
}
}
第三题 LeetCode 98.验证二叉搜索树 (中等)
class Solution {
public boolean isValidBST(TreeNode root) {
return isValidBST(root, null, null);
}
public boolean isValidBST(TreeNode root, TreeNode min, TreeNode max) {
if(root == null){
return true;
}
if(max != null && root.val >= max.val ){ return false}
if(min != null && root.val <= min.val ){ return false}
return isValidBST(root.left, min, root) &&
isValidBST(root.right, root, max);
}
}
第四题 LeetCode 450.删除二叉搜索树中的节点 (中等)
class Solution {
public TreeNode deleteNode(TreeNode root, int key) {
if(root == null){
return null;
}
if(root.val == key){
if(root.left == null){
return root.right;
}
if(root.right == null){
return root.left;
}
TreeNode min = getMin(root.right);
root.val = min.val;
root.right = delete(root.right, min.val);
} else if(root.val >= key){
root.left = deleteNode(root.left, key)
} else if(root.val <= key){
root.right = deleteNode(root.right, key)
}
return root;
}
public TreeNode getMin(TreeNode root){
while(root.left != null) {
return getMin(root.left);
}
return root;
}
}