二叉搜索树(Binary Search Tree,简称BST)是一种基于二叉树的数据结构。
特点:
每个节点最多有两个子节点:左子节点和右子节点。
对于任意节点,其左子树中的所有节点的值都小于该节点的值,而其右子树中的所有节点的值都大于该节点的值。
左子树和右子树都是二叉搜索树。
如果我们以中序遍历的方式遍历整个二叉搜索树时,会得到一个递增序列。
LeetCode700
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root==null)return null;
if(root.val==val)return root;
else if(root.val<val)return searchBST(root.right,val);
else if(root.val>val)return searchBST(root.left,val);
return null;
}
}
LeetCode98
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isValidBST(TreeNode root) {
return isValidBST(root,Long.MAX_VALUE,Long.MIN_VALUE);
}
public boolean isValidBST(TreeNode node,long max,long min){
if(node==null)return true;
if(node.val<=min||node.val>=max){
return false;
}
return isValidBST(node.left,node.val,min)&&isValidBST(node.right,max,node.val);
}
}