搜索
https://leetcode-cn.com/problems/search-in-a-binary-search-tree/
class Solution {public TreeNode searchBST(TreeNode root, int val) {while(root != null){if(val < root.val)root = root.left;else if(val > root.val)root = root.right;else return root;}return null;}}
插入
https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/
class Solution {public TreeNode insertIntoBST(TreeNode root, int val) {TreeNode r = root;if(r == null)r = new TreeNode(val);while(root != null){if(val < root.val){if(root.left == null){root.left = new TreeNode(val);break;}else root = root.left;}else{if(root.right == null){root.right = new TreeNode(val);break;}else root = root.right;}}return r;}}
删除
https://leetcode-cn.com/problems/delete-node-in-a-bst/solution/
class Solution {public TreeNode deleteNode(TreeNode root, int key) {if(root == null)return null;else if(key < root.val)root.left = deleteNode(root.left, key);else if(key > root.val)root.right = deleteNode(root.right, key);else{if(root.left != null && root.right != null){//两边都有子树,在左子树中找最大值TreeNode temp = findMax(root.left);root.val = temp.val;//删除找到的最大节点root.left = deleteNode(root.left, root.val);}else{//有一边为空TreeNode temp = root;if(root.left == null)root = root.right;else if(root.right == null)root = root.left;}}return root;}public TreeNode findMax(TreeNode root){while(root.right != null)root = root.right;return root;}}
